Python文件系统和文件操作

1.1 文件系统概述

文件系统负责组织和管理数据在存储设备上的存储和检索方式。Python 提供了多个模块来与文件系统进行交互,例如 osos.pathpathlib。理解文件系统的结构对于在 Python 中高效地执行文件操作至关重要。

常见文件系统类型:

  • FAT (文件分配表): 用于较旧的系统和一些可移动存储设备。
  • NTFS (新技术文件系统): 现代Windows系统使用的文件系统。
  • ext (扩展文件系统): Linux 系统使用的文件系统家族。

Python 提供了丰富的功能来处理文本文件,这些功能可以用来读取文件中的内容、向文件中写入数据、追加数据等。掌握文本文件操作是进行文件处理的基础。

2.1 打开和关闭文件

在 Python 中,文件操作的第一步是打开文件。在 Python 中可以使用 open() 函数来打开一个文件,它会返回一个文件对象。文件对象表示一个打开的文件,并允许进行各种文件操作。

open() 函数的语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

其中:

  • file:表示要打开的文件的路径。
  • mode:文件的操作模式,常见的有:
    • 'r':读取模式 (默认)。
    • 'w':写入模式,会覆盖文件。
    • 'a':追加模式,内容将被追加到文件末尾。
    • 'b':二进制模式,可与其他模式组合使用,如 'rb' 表示二进制读取。
    • '+':读写模式。
2.1.1 文件读取模式 (r)
# 使用 'r' 模式打开文件进行读取
file = open('example.txt', 'r')  # 打开文件进行读取

# 读取文件的内容
content = file.read()
print(content)

# 关闭文件
file.close()

在以上代码中,open() 函数以只读模式打开了一个名为 example.txt 的文件。如果文件存在,则读取其内容;如果文件不存在,则会引发 FileNotFoundError 异常。

注意: 在进行文件操作时,务必要在完成操作后关闭文件,这可以通过调用 file.close() 实现。未关闭文件可能会导致文件损坏或资源泄漏问题。

2.1.2 使用 with 语句自动管理文件

Python 提供了一种更好的方法来管理文件,即使用 with 语句。在使用 with 语句时,无需显式调用 close(),文件会在代码块结束时自动关闭。这种方式不仅简洁,还能确保文件始终被正确关闭。

# 使用 with 语句自动管理文件
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
# 退出 with 语句后,文件自动关闭

优点:

  • 避免忘记关闭文件。
  • 简化代码,提高代码可读性。

2.2 读取文件内容

Python 提供了多种方法来从文件中读取内容,包括读取整个文件、逐行读取以及按指定大小读取。

2.2.1 read():读取整个文件

read() 方法可以一次性读取文件的所有内容。可以指定一个整数参数来限制读取的字节数,如果不指定参数则读取整个文件内容。

# 读取整个文件内容
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

说明:

  • read() 方法会读取整个文件并将其内容作为字符串返回。如果文件较大,建议不要使用这种方式,因为它会将所有内容加载到内存中,可能会导致内存不足。
2.2.2 readline():逐行读取

readline() 方法每次只读取文件中的一行,适用于需要逐行处理文件的场景。

# 使用 readline() 逐行读取文件
with open('example.txt', 'r') as file:
    line = file.readline()
    while line:
        print(line, end='')  # 打印每一行
        line = file.readline()  # 读取下一行

说明:

  • readline() 方法每次只读取一行,遇到换行符 \n 时停止。
  • 使用 while 循环可以逐行读取文件直到读取完整个文件。
2.2.3 readlines():读取所有行

readlines() 方法会一次性读取文件的所有行,并将其作为一个包含每行内容的列表返回。

# 使用 readlines() 读取所有行
with open('example.txt', 'r') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')

说明:

  • readlines() 会将每一行作为列表中的一个元素。可以使用循环逐行处理文件内容。

2.3 文件写入操作

文件写入操作是将数据写入到文件中。Python 提供了简单的文件写入功能,可以将数据保存到文件中供以后使用。

2.3.1 写入文件的基本方法 (write())

要向文件中写入数据,可以使用 open() 函数并将文件模式设置为 'w'。如果文件不存在,open() 会自动创建文件;如果文件已经存在,写入操作会覆盖文件中的所有内容。

# 使用 'w' 模式写入文件
with open('output.txt', 'w') as file:
    file.write("这是写入文件的第一行。\n")
    file.write("这是写入文件的第二行。")

说明:

  • write() 方法将字符串写入文件。如果要写入多行文本,可以多次调用 write(),或将数据拼接成一个字符串。
  • 使用 'w' 模式会覆盖文件中的现有内容,因此要小心避免意外覆盖重要数据。
2.3.2 追加文件 (a 模式)

使用 'a' 模式打开文件时,新的内容将被追加到文件的末尾,而不会覆盖现有内容。

# 使用 'a' 模式追加写入文件
with open('output.txt', 'a') as file:
    file.write("\n这是追加到文件末尾的内容。")

说明:

  • 'a' 模式会在文件末尾添加新内容,而不会影响文件中已存在的数据。

2.4 文件模式总结

常见的文件操作模式总结如下:

模式 作用
'r' 以只读模式打开文件,文件必须存在。
'w' 以写入模式打开文件,文件不存在时会创建新文件,存在时会覆盖文件内容。
'a' 以追加模式打开文件,文件不存在时会创建新文件,存在时会在末尾追加内容。
'b' 以二进制模式打开文件,常与其他模式组合使用,如 'rb' 表示以二进制方式读取文件。
'+' 以读写模式打开文件,允许同时进行读写操作。

2.5 文件的缓冲与编码

2.5.1 文件缓冲

open() 函数的 buffering 参数控制文件的缓冲行为。默认情况下,文本文件使用行缓冲,二进制文件使用块缓冲。

# 设置不使用缓冲区(0 表示禁用缓冲)
with open('example.txt', 'w', buffering=0) as file:
    file.write("无缓冲的写入操作。")
2.5.2 文件编码

处理非ASCII字符时,通常需要指定文件的编码格式。Python 使用 encoding 参数来指定文件的编码,如 UTF-8。

# 指定文件编码为 UTF-8
with open('utf8_file.txt', 'w', encoding='utf-8') as file:
    file.write("这是使用UTF-8编码写入的内容。")

猜你喜欢

转载自blog.csdn.net/imdeity/article/details/142452469