python超详细基础文件操作【建议收藏】

以下是一篇超详细的Python基础文件操作指南,结合了多个优质资源整理而成,建议收藏备用:


一、文件操作基础概念

1.1 文件类型
  • 文本文件:由字符序列组成(如.txt、.csv)
  • 二进制文件:由字节序列组成(如图片、音频)
  • 编码推荐:优先使用UTF-8编码处理文本文件
1.2 操作流程
  1. 打开文件 → 2. 读写操作 → 3. 关闭文件

二、文件打开与关闭

2.1 基础打开方式
# 传统方式(需手动关闭)
file = open("test.txt", "r", encoding="utf-8")
content = file.read()
file.close()

# 推荐方式:with语句(自动关闭)
with open("test.txt", "r", encoding="utf-8") as f:
    content = f.read()

模式说明

  • r:只读(默认)
  • w:覆盖写入(文件不存在则创建)
  • a:追加写入
  • +:可读写(如r+
  • b:二进制模式(如rb
2.2 文件路径处理
import os
from pathlib import Path

# 获取当前路径
print(os.getcwd())  # 传统方式
print(Path.cwd())   # 面向对象方式(推荐)

# 路径拼接(跨平台兼容)
file_path = Path("data") / "logs" / "app.log"

三、文件读取操作

3.1 基础读取方法
# 一次性读取
with open("data.txt", "r") as f:
    content = f.read()  # 全部内容字符串

# 逐行读取(内存友好)
with open("data.txt", "r") as f:
    for line in f:
        print(line.strip())

# 读取为列表
lines = f.readlines()  # 返回行列表
3.2 读取控制
# 读取指定字节数
chunk = f.read(1024)  # 读取前1024字节

# 文件指针操作
f.seek(0)    # 跳转到文件开头
pos = f.tell()  # 获取当前指针位置

四、文件写入操作

4.1 基础写入方法
# 覆盖写入
with open("output.txt", "w") as f:
    f.write("Hello World\n")
    f.writelines(["Line1\n", "Line2\n"])

# 追加模式
with open("log.txt", "a") as f:
    f.write("New log entry\n")
4.2 批量写入技巧
# 生成式写入
data = [f"Data{i}\n" for i in range(10)]
with open("dataset.txt", "w") as f:
    f.writelines(data)

五、高级文件操作

5.1 文件管理
import shutil

# 文件复制
shutil.copy("src.txt", "dst.txt")

# 文件移动/重命名
shutil.move("old.txt", "new.txt")

# 目录操作
os.makedirs("new_folder", exist_ok=True)
5.2 异常处理
try:
    with open("missing.txt", "r") as f:
        content = f.read()
except FileNotFoundError:
    print("文件不存在!")
except UnicodeDecodeError:
    print("编码错误!")

六、实用技巧合集

  1. 大文件处理:使用生成器逐行读取
def read_large_file(file_path):
    with open(file_path, "r") as f:
        while chunk := f.read(1024*1024):  # 每次读取1MB
            yield chunk
  1. 内容替换:安全修改方案
import tempfile

def replace_content(file_path, old, new):
    with open(file_path, "r") as fin, tempfile.NamedTemporaryFile("w", delete=False) as fout:
        for line in fin:
            fout.write(line.replace(old, new))
    shutil.move(fout.name, file_path)
  1. 编码检测(需安装chardet库)
import chardet

def detect_encoding(file_path):
    with open(file_path, "rb") as f:
        result = chardet.detect(f.read())
    return result["encoding"]

七、最佳实践建议

  1. 始终使用with语句管理文件
  2. 明确指定文件编码(推荐UTF-8)
  3. 大文件处理时采用流式读取
  4. 敏感操作前备份重要文件
  5. 优先使用pathlib处理路径

本文整合了Python文件操作的核心知识点,涵盖基础操作到高级技巧,建议结合代码示例进行实践练习。如需更深入的模块使用(如logging、json等),可参考相关文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值