首页 > 编程语言 >Python文件操作:文件的读取和写入(文本文件、二进制文件)①

Python文件操作:文件的读取和写入(文本文件、二进制文件)①

时间:2024-09-12 17:22:46浏览次数:14  
标签:文件 文本文件 Python 二进制 file password open 读取

在这里插入图片描述

文章目录

在Python中,文件操作是一个非常重要的功能,允许程序读写磁盘上的文件。无论是处理配置文件、存储数据,还是读取数据,文件操作都是不可或缺的。本文将详细介绍Python中文件的读取和写入操作,包括文本文件和二进制文件的处理,并附上一个综合详细的例子。

1. 文件操作基础

在进行文件操作之前,我们需要了解几个基本概念和操作。

1.1 打开文件

在Python中,可以使用 open() 函数打开文件。 open() 函数的基本语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file:要打开的文件的路径。
  • mode:文件打开模式,默认为读模式(‘r’)。常见模式包括:
    • 'r':只读模式。文件必须存在。
    • 'w':写入模式。如果文件不存在则创建文件,如果文件存在则清空文件内容。
    • 'a':追加模式。如果文件不存在则创建文件,如果文件存在则在文件末尾追加内容。
    • 'b':二进制模式。可以与其他模式结合使用(如 'rb' 表示二进制读)。
    • 't':文本模式。默认模式。
    • '+':读写模式。可以与其他模式结合使用(如 'r+' 表示读写模式)。

1.2 关闭文件

文件操作完成后,需要关闭文件以释放系统资源。可以使用 close() 方法关闭文件。

file = open('example.txt', 'r')
# ...进行文件操作...
file.close()

为了确保文件在操作完成后被正确关闭,通常使用 with 语句来打开文件,with 语句会在块结束时自动关闭文件。

with open('example.txt', 'r') as file:
    # ...进行文件操作...

2. 文本文件操作

文本文件是最常见的文件类型,包含人类可读的字符数据。

2.1 读取文本文件

2.1.1 逐行读取

可以使用 readline() 方法逐行读取文件内容。

with open('example.txt', 'r') as file:
    line = file.readline()
    while line:
        print(line, end='')
        line = file.readline()
2.1.2 读取所有内容

可以使用 read() 方法一次性读取文件的所有内容。

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
2.1.3 读取所有行

可以使用 readlines() 方法读取文件的所有行,并返回一个包含每行内容的列表。

with open('example.txt', 'r') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')

2.2 写入文本文件

2.2.1 写入内容

可以使用 write() 方法向文件写入内容。

with open('example.txt', 'w') as file:
    file.write('Hello, World!\n')
    file.write('This is a text file.')
2.2.2 追加内容

可以使用 'a' 模式打开文件,并使用 write() 方法在文件末尾追加内容。

with open('example.txt', 'a') as file:
    file.write('\nAppending a new line.')

3. 二进制文件操作

二进制文件包含二进制数据,通常用于存储图像、音频、视频等非文本数据。

3.1 读取二进制文件

可以使用 'rb' 模式打开文件,并使用 read() 方法读取文件内容。

with open('example.bin', 'rb') as file:
    content = file.read()
    print(content)

3.2 写入二进制文件

可以使用 'wb' 模式打开文件,并使用 write() 方法向文件写入二进制数据。

with open('example.bin', 'wb') as file:
    file.write(b'\x00\x01\x02\x03')

4. 综合示例

现在我们来实现一个综合示例,该示例将演示如何读取和写入文本文件和二进制文件。

4.1 示例描述

我们将创建一个简单的用户管理系统,可以将用户信息(用户名和密码)存储在文本文件中,同时可以读取这些信息。此外,我们还将演示如何将用户信息加密后存储在二进制文件中,并读取和解密这些信息。

4.2 实现代码

import base64
import os

class UserManager:
    def __init__(self, text_file, binary_file):
        self.text_file = text_file
        self.binary_file = binary_file

    def add_user(self, username, password):
        with open(self.text_file, 'a') as file:
            file.write(f'{username},{password}\n')

        encrypted_password = base64.b64encode(password.encode()).decode()
        with open(self.binary_file, 'ab') as file:
            file.write(f'{username},{encrypted_password}\n'.encode())

    def get_users(self):
        users = []
        with open(self.text_file, 'r') as file:
            lines = file.readlines()
            for line in lines:
                username, password = line.strip().split(',')
                users.append((username, password))
        return users

    def get_encrypted_users(self):
        users = []
        with open(self.binary_file, 'rb') as file:
            lines = file.readlines()
            for line in lines:
                username, encrypted_password = line.strip().decode().split(',')
                password = base64.b64decode(encrypted_password.encode()).decode()
                users.append((username, password))
        return users

# 创建UserManager实例
user_manager = UserManager('users.txt', 'users.bin')

# 添加用户
user_manager.add_user('Alice', 'password123')
user_manager.add_user('Bob', 'mypassword')

# 获取用户信息
print('用户信息:')
for username, password in user_manager.get_users():
    print(f'用户名: {username}, 密码: {password}')

# 获取加密的用户信息
print('\n加密的用户信息:')
for username, password in user_manager.get_encrypted_users():
    print(f'用户名: {username}, 密码: {password}')

4.3 解释

  1. UserManager 类:该类用于管理用户信息,包括添加用户、获取用户信息和获取加密的用户信息。

    • __init__ 方法:初始化文件路径。
    • add_user 方法:向文本文件和二进制文件中添加用户信息。在向二进制文件中添加信息时,会对密码进行Base64加密。
    • get_users 方法:从文本文件中读取用户信息,并返回一个包含用户名和密码的列表。
    • get_encrypted_users 方法:从二进制文件中读取加密的用户信息,并对密码进行解密,返回一个包含用户名和密码的列表。
  2. Base64 编码和解码:在写入二进制文件时,我们使用Base64对密码进行编码。在读取二进制文件时,我们对密码进行解码。

4.4 执行结果

在这里插入图片描述

5. 总结

本文详细介绍了Python中文件的读取和写入操作,包括文本文件和二进制文件的处理方法。我们通过一个综合详细的示例,展示了如何在实际应用中使用这些文件操作方法。文件操作是Python编程中的一个重要部分,掌握这些技巧可以帮助我们更高效地处理数据存储和读取任务。希望本文对您理解和应用Python文件操作有所帮助。


欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力

标签:文件,文本文件,Python,二进制,file,password,open,读取
From: https://blog.csdn.net/rjdeng/article/details/142181664

相关文章

  • 基于MicroPython的ESP8266控制RGB颜色传感器识别颜色的设计方案
        以下是一个基于MicroPython的ESP8266控制RGB颜色传感器进行颜色识别的设计方案:一、硬件准备1. ESP8266开发板(如NodeMCU)。2. RGB颜色传感器(例如TCS3200传感器)。3. 面包板。4. 杜邦线若干。5.3.3V直流电源二、硬件连接1. 将ESP8266的3.3V引脚、GND......
  • DataGrip 2021.2.2如何导出.sql文件
     目录Blue留声机: 导出文件:1、点击要导出的table,选择Exportwith'mysqldump'2、选择一下数据库备份数据的路径,选择导出sql文件存放的位置导入文件: 概览:1.第一步,进入运维管理端,通过命令行进入数据库2.第二步,切换数据库3.第三步,导入sql文件source无法导入sql文件......
  • 基于MicroPython的ESP8266控制舵机的设计方案
        以下是一个基于MicroPython的ESP8266控制舵机的设计方案: 一、硬件准备1. ESP8266开发板(如NodeMCU)。2. 舵机(如SG90)。3. 杜邦线若干。 二、硬件连接1.将5V直流电源连接到舵机的电源引脚(通常为红色线)。2.将3.3V直流电源连接到ESP8266的3.3V管脚。3......
  • C#.NET实现文件夹的上传和下载
    前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.netcore数据库:SQLServer,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储该说不说,最近这块挻火的,今天早上又有网友加我微信,实际上我的微信号之前就已经在......
  • 百度WEBUPLOADER大文件(视频)上传解决方案
    前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,jsp,springboot,php,数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产数据库功能:超大文件上传,文件和文件夹批量上传,断点续传,加密上传,视频上传技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方......
  • python利用matplot绘制横向条形图,并调整每个条形的位置
    通过color_x和t_x控制每个条形的颜色和文本,draw_mybar里的y和left可以控制条形显示的位置。importmatplotlib.pyplotaspltimportnumpyasnp#数据设置categories=["A","B","C","D"]color_1="#9dc3e4"color_2="#f8cbbd"color_3=......
  • pbootcms自动加载类文件时发生错误,类名【core\basic\Kernel】
    当PbootCMS在自动加载类文件时发生错误,提示类名 core\basic\Kernel 丢失,通常是由于 Kernel.php 文件被误删除或被安全系统误判为风险文件。在这种情况下,可以按照以下步骤重新上传 Kernel.php 文件来解决问题。解决方案重新下载模板下载任意一个PbootCMS的模板包。......
  • PbootCMS增加可允许上传文件类型,例如webp、mov等文件格式扩展
    要在PbootCMS中增加允许上传的文件类型,比如 webp 或 mov 格式,您需要编辑系统的配置文件来添加这些文件扩展名。以下是具体的操作步骤:打开PbootCMS的配置文件 config.php,通常这个文件位于项目的 /config/ 目录下。在 config.php 文件中,找到上传配置的部分,这通常......
  • python基于django框架医院管理系统设计与实现mysql数据库
    随着信息技术的快速发展和医疗卫生事业的不断进步,医院信息化管理已成为提高医疗服务质量和效率的重要手段。本文设计并实现了一个基于PythonDjango框架的医院管理系统,旨在为医院提供一个全面、高效、易用的信息化管理平台。本系统采用Django框架作为后端开发框架,利用其强大......
  • ubuntu22.04安装python2+python命令软链接修改
      ubuntu22.04安装python2+python命令软链接修改问题由来:新版本的ubuntu默认安装python3,且可能默认的运行命令为python3,而非python。除此之外,一些古早的代码底层可能用的python2。因此,本文简单讲述如何在高版本系统中安装python2,并添加python命令(软链接)1python2安装(1)apt-ge......