总结:
内置模块,基本文件操作;
文件/目录操作库:os
模块,shutil
模块,pathlib
模块,glob
模块
os
模块:基础的文件操作,如删除、重命名、路径操作。
shutil
模块:用于复制、移动文件和目录。
pathlib
模块:面向对象的文件路径操作(推荐)。
glob
模块:用于文件通配符匹配。
1.内置模块
基本文件操作
打开文件
使用 open()
函数可以打开文件进行读取、写入或追加操作。
python
# 打开文件,模式为 'r' 读取
file = open('example.txt', 'r')
print(file.read()) # 读取文件内容
file.close() # 关闭文件
文件读写模式
open()
支持以下模式:
'r'
: 只读模式(文件必须存在)。'w'
: 写入模式(如果文件存在会清空内容;不存在则创建新文件)。'a'
: 追加模式(从文件末尾开始写入,不清空文件)。'rb'
,'wb'
,'ab'
: 二进制模式(用于非文本文件,如图片)。'r+'
: 可读可写模式。
推荐用法: with
语句
使用 with
打开文件,无需手动关闭,系统会自动管理文件资源。
# 读取文件
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 写入文件
with open('example.txt', 'w') as file:
file.write('Hello, Python!')
# 追加写入
with open('example.txt', 'a') as file:
file.write('\nThis is an appended line.')
常见操作
1. 逐行读取文件
2. 读取所有内容
3. 写入文件
4. 追加内容
5. 读取文件为列表
文件/目录操作库
os
模块import os os.rename('example.txt', 'renamed.txt') # 重命名文件 os.remove('renamed.txt') # 删除文件 print(os.listdir('.')) # 列出当前目录的文件
shutil
模块import shutil shutil.copy('source.txt', 'destination.txt') # 复制文件 shutil.move('source.txt', 'new_directory/') # 移动文件 shutil.rmtree('directory_to_remove') # 删除目录
pathlib
模块from pathlib import Path file = Path('example.txt') print(file.exists()) # 检查文件是否存在 print(file.is_file()) # 检查是否是文件 file.write_text('Hello') # 写入文本 print(file.read_text()) # 读取文本
glob
模块
import glob
print(glob.glob('*.txt')) # 匹配当前目录下所有 .txt 文件
文件的位置
1. 当前工作目录
默认情况下,Python 会在当前工作目录中寻找文件。如果文件位于当前目录,只需要直接提供文件名即可。
检查当前工作目录
可以使用以下代码查看当前工作目录:
python
import os
print(os.getcwd()) # 获取当前工作目录
2. 相对路径
如果文件不在当前目录,可以使用相对路径来访问文件。相对路径是基于当前工作目录的路径。
文件在子目录中:
with open('subfolder/example.txt', 'r') as file:
content = file.read()
文件在上级目录中:
with open('../example.txt', 'r') as file: # ../ 表示上一级目录
content = file.read()
3. 绝对路径
如果文件的位置与代码目录无关,可以使用绝对路径来访问文件。
with open('C:/Users/YourUsername/Documents/example.txt', 'r') as file:
content = file.read()
获取绝对路径
如果需要动态生成绝对路径,可以结合 os
或 pathlib
模块:
import os
# 获取文件绝对路径
file_path = os.path.abspath('example.txt')
print(file_path)
4. 文件与代码放在同一目录
如果希望代码始终能找到文件,可以将文件放在脚本文件所在的目录,然后使用以下方式获取脚本所在的目录路径:
import os
# 获取脚本文件所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 构造文件路径
file_path = os.path.join(script_dir, 'example.txt')
# 打开文件
with open(file_path, 'r') as file:
content = file.read()
print(content)
5. 跨平台路径管理
使用 pathlib
模块可以更方便地处理路径(推荐):
from pathlib import Path
# 获取当前脚本目录
script_dir = Path(__file__).parent
# 构造文件路径
file_path = script_dir / 'example.txt'
# 打开文件
with file_path.open('r') as file:
content = file.read()
print(content)
pathlib
会自动适配路径分隔符(/
或 \
),适用于不同操作系统。
常见问题与解决方法
1. 文件找不到 (FileNotFoundError
)
- 确保文件存在于指定路径。
- 使用绝对路径检查文件是否正确:
import os print(os.path.exists('example.txt')) # 检查文件是否存在
2. 路径分隔符问题
- 在 Windows 上路径分隔符是
\
,但\
在字符串中可能被解释为转义字符。 - 使用原始字符串避免转义:
path = r'C:\Users\YourUsername\example.txt' # 加 r 使路径成为原始字符串
3. 代码与文件在不同目录
- 使用
__file__
确保路径与脚本目录一致。 - 将文件与脚本放在同一目录,或者构造动态路径。
遇到的问题
report.write(f"Test Case:{result["test_case"]}\n")#报错
report.write(f"Test Case: {result['test_case']}\n")#正常