开始之前,我们先来了解一下文件是什么。
文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。计算机文件基本上分为二种:二进制文件(没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。
那么文件类型都有哪些呢
ASCII
、ISO-8859-1
、GB2312
、GBK
、UTF-8
、UTF-16
等。在Python中,通常使用UTF-8
编码来处理文本文件,因为它支持多种语言的字符集。mode | 解释 |
---|---|
r | 只读【默认模式,文件必须存在,不存在则抛出异常】 |
w | 只写,写之前会清空文件的内容,如果文件不存在,会创建新文件 |
a | 追加的方式,在原本内容中继续写,如果文件不存在,则会创建新文件 |
r+ | 可读可写 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb | 二进制只读,与r类似,但用于二进制文件 |
wb | 二进制只写,与w类似,但用于二进制文件 |
ab | 二进制追加,与a类似,但用于二进制文件 |
rb+ | 二进制可读可写,与r+类似,但用于二进制文件 |
wb+ | 二进制打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件(与w+类似,但用于二进制文件) |
ab+ | 二进制打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写(与a+类似,但用于二进制文件) |
操作类型 | 方法/函数 | 描述 | 示例 |
---|---|---|---|
打开文件 | open(file, mode='r', ...) | 返回文件对象,用于读取或写入文件 | file = open('example.txt', 'r') |
读取文件内容 | read(size=-1) | 读取整个文件内容 | content = file.read() |
readline(size=-1) | 读取一行内容 | line = file.readline() | |
readlines(hint=-1) | 读取所有行并返回一个列表 | lines = file.readlines() | |
写入文件内容 | write(string) | 将字符串写入文件 | file.write('Hello, World!\n') |
关闭文件 | close() | 关闭文件,释放资源 | file.close() |
文件指针操作 | seek(offset, whence=0) | 移动文件指针到指定位置 | file.seek(0) |
tell() | 返回文件指针当前位置 | position = file.tell() | |
上下文管理 | with open(...) as file | 使用上下文管理器自动管理文件打开和关闭 | with open('example.txt', 'r') as file: ... |
二进制模式 | open(file, 'rb') | 以二进制读模式打开文件 | with open('image.png', 'rb') as file: ... |
open(file, 'wb') | 以二进制写模式打开文件 | with open('output.bin', 'wb') as file: ... |
使用open函数可以打开一个文件,并返回一个文件对象。基本语法如下:
file_object = open(file_path, mode='r', encoding=None, errors=None, newline=None, closefd=True, opener=None)
文件对象提供了多种方法来读取、写入和操作文件。
with open('example.txt', 'r') as file:
content = file.read()
print(content)
with open('example.txt', 'w') as file:
file.write('Hello, World!\n')
file.writelines(['This is a line.\n', 'This is another line.\n'])
with open('example.txt', 'r+') as file:
content = file.read(5) # 读取前5个字符
print(content)
file.seek(0) # 将文件指针移回文件开头
file.write('Hi ') # 覆盖前5个字符
file.flush() # 刷新缓冲区,确保数据写入文件
文件对象可以使用close()方法手动关闭,但更好的方式是使用with语句,这样文件会在块结束时自动关闭。
with open('example.txt', 'r') as file:
content = file.read()
# 文件在这里会自动关闭
对于二进制文件,使用’rb’、'wb’等模式打开文件。
# 写入二进制文件
with open('example.bin', 'wb') as file:
file.write(b'\x00\x01\x02\x03\x04')
# 读取二进制文件
with open('example.bin', 'rb') as file:
content = file.read()
print(content) # 输出: b'\x00\x01\x02\x03\x04'
Python还提供了os和pathlib模块来进行文件和目录的操作,如创建目录、删除文件、重命名文件等。
import os
# 创建目录
os.makedirs('new_directory', exist_ok=True)
# 删除文件
os.remove('example.txt')
# 重命名文件
os.rename('old_name.txt', 'new_name.txt')
# 列出目录内容
print(os.listdir('.'))
使用pathlib:
from pathlib import Path
# 创建路径对象
path = Path('example.txt')
# 检查文件是否存在
if path.exists():
print('File exists.')
# 创建目录
Path('new_directory').mkdir(parents=True, exist_ok=True)
# 读取文件内容
content = path.read_text()
print(content)