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

在这里插入图片描述

在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文件操作有所帮助。


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

猜你喜欢

转载自blog.csdn.net/rjdeng/article/details/142181664