Python 文件及目录操作指南


前言

在日常开发中,文件和目录操作是必不可少的一部分。Python 提供了许多内置模块,使得文件和目录的操作变得十分方便和高效。通过本指南,您将掌握以下知识点:

  1. 文件操作:使用 Python 打开、读取和写入文件。
  2. 目录遍历:使用 os 模块遍历指定目录,列出所有文件和子目录。
  3. 数据处理与存储:将处理后的数据分别存储到不同的文件中。
  4. 综合运用:结合文件操作和目录遍历,实现综合功能的 Python 脚本。

在这里插入图片描述


一、常用标准库

Python 中用于文件操作的标准库有几个主要的模块和包,每个模块都有其特定的功能。以下是一些常用的标准库:

1. os 模块

os 模块提供了一些与操作系统交互的功能,尤其是文件和目录操作。

  • os.open(), os.close():低级别的文件打开和关闭。
  • os.listdir():列出指定目录中的所有文件和子目录。
  • os.mkdir(), os.makedirs():创建目录。
  • os.remove(), os.unlink():删除文件。
  • os.rmdir(), os.removedirs():删除目录。
  • os.path:包含许多处理文件路径的方法,如 os.path.join(), os.path.exists(), os.path.isfile(), os.path.isdir()

2. shutil 模块

shutil 模块提供了一些高级的文件操作功能,如复制和删除目录树。

  • shutil.copy(), shutil.copy2(), shutil.copyfile():复制文件。
  • shutil.move():移动文件或目录。
  • shutil.rmtree():递归删除目录树。

3. pathlib 模块

pathlib 模块提供了面向对象的文件系统路径操作接口,更加直观和易用。

  • Path 对象:表示文件系统路径。
  • Path.mkdir():创建目录。
  • Path.unlink():删除文件。
  • Path.rmdir():删除目录。
  • Path.iterdir():生成目录中的所有条目。

4. io 模块

io 模块提供了核心工具来处理流式 I/O,如文件读取和写入。

  • io.open():与内置的 open() 函数类似。
  • io.StringIOio.BytesIO:在内存中操作文本和二进制数据的流。

二、操作过程及内容

步骤一:环境准备

  1. 安装并配置 Python 开发环境,不会配置的可以参考该篇文章喔🚪
  2. 创建所需的输入文件 input.txt,并在该文件中写入一些初始内容以供读取。如下图:
    在这里插入图片描述

步骤二:文件操作

  1. 读取文件内容:编写函数 read_file(file_path),接受一个文件路径作为参数,读取文件内容并返回。调用 Python 自带的 open() 函数以只读 r 的方式打开文件,在 open() 函数中增加参数 encoding="utf-8,确保文件内容为 UTF-8 编码格式。文件中存储的内容是中文,编码格式是utf-8格式,而Windows系统的默认编码是gbk,故需要在open()函数中指定字符编码utf-8,否则程序会出现异常。对返回的文件对象f调用read()函数读取文件的内容,调用该函数读取 input.txt 文件内容。
# 1. 打开一个文件,并将文件内容读取出来
def read_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        content = file.read()
    return content
  1. 写入文件内容:编写函数 write_file(content, new_content, output_file_path),将读取的内容和新内容写入到指定的文件中。以覆盖写 w 的模式打开要输出的文件,文件不存在则创建,存在则完全覆盖。对返回的文件对象f调用write()函数将读取的内容换行后和新内容一起写入到output.txt
# 2. 将读取的内容写入另外一个文件,增加新的内容
def write_file(content, new_content, output_file_path):
    with open(output_file_path, 'w', encoding='utf-8') as file:
        file.write(content)
        file.write("\n")  # 添加一个换行符
        file.write(new_content)
        
write_file(content, '这是新内容', 'output.txt')

步骤三:目录遍历

  1. 遍历目录:编写函数 list_files_and_directories(directory_path),遍历指定目录,返回文件和子目录的列表。初始化用于存放文件和子目录的两个列表,使用os模块中的walk()函数遍历指定目录,获取指定路径下的所有目录和文件信息
    再对得到的目录名称和文件名称遍历,分别拼接在root目录后面填入到列表中,调用该函数,获取指定目录的文件和子目录列表。

walk()函数的返回值是一个生成器,生成器的每一个元素都是一个三元组(root,dirs,files)root是指当前正在遍历的文件夹的路径;dirs是一个列表,包含当前文件夹下所有目录的名称;files是一个列表,包含当前文件夹下所有文件的名称。

# 3. 对指定目录进行遍历,并列出其中所有的文件和子目录
def list_files_and_directories(directory_path):
    files = []
    directories = []
    for root, dirs, file_names in os.walk(directory_path):
        for dir_name in dirs:
            directories.append(os.path.join(root, dir_name))
        for file_name in file_names:
            files.append(os.path.join(root, file_name))
    return files, directories
  1. 编写函数 write_list_to_file(items, output_file_path),将列表 items 写入到指定文件,每个项占一行。以覆盖写的方式打开要输出的文件,遍历输入的列表items,将每一项数据都写入到文件中,调用该函数,将文件列表写入 files_list.txt,将目录列表写入 directories_list.txt
# 4. 将列出的文件和子目录分别写入两个不同的文件中
def write_list_to_file(items, output_file_path):
    with open(output_file_path, 'w', encoding='utf-8') as file:
        for item in items:
            file.write(item + "\n")

步骤四:综合脚本

编写主程序,整合上述各步骤的函数,完成指定的功能:

if __name__ == "__main__":
    # 设置文件路径
    input_file_path = 'verse.txt'  # 替换为要读取的文件路径
    intermediate_output_file_path = 'output.txt'
    final_files_list_output_path = 'files_list.txt'
    final_directories_list_output_path = 'directories_list.txt'
    directory_to_traverse = 'D:/hjy/python学习/workspace/pythonProject'  # 替换为要遍历的目录路径

    # 读取文件内容
    file_content = read_file(input_file_path)

    # 写入新的内容到另外一个文件
    new_content = "这是添加的新内容。"
    write_file(file_content, new_content, intermediate_output_file_path)

    # 遍历目录,列出所有文件和子目录
    files, directories = list_files_and_directories(directory_to_traverse)

    # 将文件列表和目录列表分别写入两个不同的文件中
    write_list_to_file(files, final_files_list_output_path)
    write_list_to_file(directories, final_directories_list_output_path)

    print("操作完成,结果已写入相应文件。")

操作结果

运行这个python程序,控制台打印,操作完成,结果已写入相应文件。
在这里插入图片描述

检查输出的文件,Output.txt在原内容的基础上换行后添加了新内容
在这里插入图片描述
files_list.txt输出了指定目录下的所有文件
在这里插入图片描述
directories_list.txt输出了指定目录下的所有子目录
在这里插入图片描述


总结

通过本篇博客,我们详细介绍了如何使用 Python 进行文件和目录操作。首先,我们了解了几个常用的标准库如 os、shutil、pathlib 和 io 的基本用法。接着,我们通过具体的示例展示了如何读取和写入文件,如何遍历目录并列出其中的文件和子目录,最后将这些操作整合到一个完整的脚本中。希望这篇博客能帮助读者更好地理解和运用 Python 进行文件和目录操作,如果有任何疑问或者建议,欢迎留言讨论🌹

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值