python-文件操作库

总结:

内置模块,基本文件操作;

文件/目录操作库: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. 读取文件为列表

文件/目录操作库

  1. os 模块
    import os
    
    os.rename('example.txt', 'renamed.txt')  # 重命名文件
    os.remove('renamed.txt')                # 删除文件
    print(os.listdir('.'))                  # 列出当前目录的文件
    
  2. shutil 模块
    import shutil
    
    shutil.copy('source.txt', 'destination.txt')  # 复制文件
    shutil.move('source.txt', 'new_directory/')   # 移动文件
    shutil.rmtree('directory_to_remove')         # 删除目录
    
  3. pathlib 模块
    from pathlib import Path
    
    file = Path('example.txt')
    print(file.exists())       # 检查文件是否存在
    print(file.is_file())      # 检查是否是文件
    file.write_text('Hello')   # 写入文本
    print(file.read_text())    # 读取文本
    
  4. 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()
获取绝对路径

如果需要动态生成绝对路径,可以结合 ospathlib 模块:

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")#正常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值