文件处理Python提供了强大的功能,可以方便地读取、写入、修改和管理文件。大圣下面讲解Python文件处理的系统,包括基本概念、常用方法和高级技巧。
一、文件的基本概念
1.文件类型
文本文件:以文本形式存储数据,如.txt文件。文件中的内容可以是字符、数字等,通常使用 UTF - 8 等编码格式。
二进制文件:以二进制形式存储数据,如.jpg、.exe等文件。这种文件不能直接以文本方式读取,需要以二进制模式打开和处理。
2.文件路径
绝对路径:从文件系统的根目录开始的完整路径。例如,在 Windows 系统中,C:\Users\example\file.txt是一个绝对路径。
相对路径:相对于当前工作目录的路径。如果当前工作目录是C:\Users\example,那么文件file.txt的相对路径可以是file.txt或.\file.txt。
二、文件的打开与关闭
1.打开文件
使用open()函数来打开文件。它的语法是:
file_object = open(file_name, mode)
file_name是文件的路径(可以是相对路径或绝对路径)。
mode是打开文件的模式,常见的模式有:
'r':只读模式,默认模式。如果文件不存在,会抛出FileNotFoundError。
'w':写入模式。如果文件不存在,会创建一个新文件;如果文件已存在,会清空文件内容后再写入。
'x':独占创建模式。如果文件不存在,会创建一个新文件;如果文件已存在,会抛出FileExistsError。
'a':追加模式。如果文件不存在,会创建一个新文件;如果文件已存在,会在文件末尾追加内容。
't':文本模式,默认模式。用于处理文本文件。
'b':二进制模式。用于处理二进制文件。
'+':更新模式。用于同时读写文件。
示例:以只读模式打开一个文本文件:
file = open('example.txt', 'r')
2.关闭文件
使用close()方法关闭文件。关闭文件后,文件对象将不再可用,释放系统资源。
file.close()
为了避免忘记关闭文件,可以使用with语句。with语句会自动管理文件的打开和关闭,即使在文件操作过程中发生异常,文件也会被正确关闭。
with open('example.txt', 'r') as file:# 在这里进行文件操作# 文件操作结束后,文件会自动关闭
三、读取文件内容
1.逐行读取
使用readline()方法逐行读取文件内容。每次调用readline()会返回文件中的一行内容,直到文件末尾返回空字符串。
with open('example.txt', 'r') as file: while True:line = file.readline()if not line:breakprint(line.strip())# 使用 strip() 去掉行尾的换行符
使用readlines()方法读取文件的所有行,返回一个包含所有行的列表。每一行都是一个字符串,包含换行符。
with open('example.txt', 'r') as file: lines = file.readlines()for line in lines:print(line.strip())
2.整体读取
使用read()方法读取文件的全部内容,返回一个字符串。
with open('example.txt', 'r') as file: content = file.read()print(content)
四、写入文件内容
1.写入字符串
使用write()方法写入字符串内容。如果文件以'w'模式打开,写入的内容会覆盖原有内容;如果以'a'模式打开,写入的内容会追加到文件末尾。
with open('example.txt', 'w') as file: file.write('Hello, world!\n')file.write('This is a test.\n')
2.写入多行
使用writelines()方法写入多行内容。writelines()接收一个字符串列表,将列表中的每个字符串写入文件,但不会自动添加换行符。
lines = ['Hello, world!\n', 'This is a test.\n']with open('example.txt', 'w') as file: file.writelines(lines)
五、文件的其他操作
1.获取文件大小
使用os.path.getsize()函数获取文件的大小(以字节为单位)。
import ossize = os.path.getsize('example.txt')print(f'文件大小:{size} 字节')
2.检查文件是否存在
使用os.path.exists()函数检查文件是否存在。
import osif os.path.exists('example.txt'): print('文件存在')else:print('文件不存在')
3.删除文件
使用os.remove()函数删除文件。
import osos.remove('example.txt')
4.复制文件
使用shutil.copy()函数复制文件。
import shutilshutil.copy('example.txt', 'example_copy.txt')
5.文件重命名
使用os.rename()函数重命名文件。
import osos.rename('example.txt', 'new_example.txt')
六、处理二进制文件
1.读取二进制文件
以'rb'模式打开二进制文件,使用read()方法读取文件内容。
with open('example.jpg', 'rb') as file: content = file.read()# 处理二进制内容
2.写入二进制文件
以'wb'模式打开二进制文件,使用write()方法写入二进制内容。
with open('example_copy.jpg', 'wb') as file: file.write(content)# content 是二进制内容
七、文件的异常处理
1.捕获文件操作异常
使用try - except块捕获文件操作过程中可能出现的异常,如FileNotFoundError、IOError等。
try: with open('example.txt', 'r') as file:content = file.read()except FileNotFoundError:print('文件未找到')except IOError:print('文件读取错误')
八、文件处理的高级技巧
1.使用文件指针
文件对象有一个文件指针,表示当前读写位置。可以使用seek()方法移动文件指针,tell()方法获取文件指针的当前位置。
with open('example.txt', 'r') as file: file.seek(10)# 将文件指针移动到第 10 个字节的位置content = file.read(5)# 从当前位置读取 5 个字节print(content)print(file.tell())# 输出文件指针的当前位置
2.使用io 模块
io模块提供了更底层的文件操作接口。例如,io.StringIO和io.BytesIO分别用于在内存中模拟文本文件和二进制文件的操作。
import io# 模拟文本文件with io.StringIO() as file:file.write('Hello, world!')file.seek(0)# 移动到文件开头content = file.read()print(content)# 模拟二进制文件with io.BytesIO() as file:file.write(b'Hello, world!')file.seek(0)content = file.read()print(content)
通过以上内容的系统讲解,你可以掌握 Python 文件处理的基本方法和一些高级技巧。在实际开发中,根据具体需求选择合适的方法来操作文件。