Python 操作文件和目录

68 阅读3分钟

在Python中,文件和目录的操作是非常基础且常用的内容。无论是读写数据、管理文件,还是遍历目录,掌握这些知识都能让你更高效地完成各种项目。

参考文章:Python 操作文件和目录 | 简单一点学习 easyeasy.me

目录

  1. 文件的打开与关闭
  2. 文件的读写操作
  3. 文件的其它常用操作
  4. 目录的基本操作
  5. 遍历目录与文件
  6. 使用 pathlib 模块进行文件和目录操作
  7. 小结

1. 文件的打开与关闭

Python使用内置的open()函数打开文件。常见的模式包括读取(r)、写入(w)、追加(a)和二进制模式(b)。

# 打开一个文本文件用于读取
f = open('example.txt', 'r')

# 使用文件后,记得关闭
f.close()

推荐用法: 使用with语句自动管理文件关闭。

with open('example.txt', 'r') as f:
    content = f.read()
# 文件会在with块结束时自动关闭

2. 文件的读写操作

读取文件内容

with open('example.txt', 'r') as f:
    text = f.read()       # 读取全部内容
    print(text)

你也可以按行读取:

with open('example.txt', 'r') as f:
    for line in f:
        print(line.strip())  # strip去除换行符

写入文件内容

with open('output.txt', 'w') as f:
    f.write("这是写入的第一行。\n")
    f.write("这是写入的第二行。\n")

追加写入:

with open('output.txt', 'a') as f:
    f.write("追加一行内容。\n")

3. 文件的其它常用操作

检查文件是否存在

import os

if os.path.exists('example.txt'):
    print("文件存在")
else:
    print("文件不存在")

删除文件

import os

os.remove('example.txt')  # 删除文件

重命名文件

import os

os.rename('old_name.txt', 'new_name.txt')

4. 目录的基本操作

创建目录

import os

os.mkdir('test_dir')  # 创建单层目录

如果要递归创建多层目录:

os.makedirs('parent_dir/child_dir')

删除目录

os.rmdir('test_dir')  # 只能删除空目录

递归删除非空目录需用shutil模块:

import shutil

shutil.rmtree('parent_dir')

5. 遍历目录与文件

列出目录中的文件和目录

import os

files = os.listdir('.')  # 列出当前目录所有文件和目录
print(files)

判断路径是文件还是目录

for f in os.listdir('.'):
    if os.path.isfile(f):
        print(f, "是文件")
    elif os.path.isdir(f):
        print(f, "是目录")

使用 os.walk 递归遍历目录

for root, dirs, files in os.walk('.'):
    print("当前路径:", root)
    print("目录列表:", dirs)
    print("文件列表:", files)
    print('---')

6. 使用 pathlib 模块进行文件和目录操作

Python3推荐使用pathlib模块,它提供面向对象的路径操作。

from pathlib import Path

# 创建Path对象
p = Path('.')

# 列出所有文件和目录
for child in p.iterdir():
    print(child)

# 判断文件是否存在
if (p / 'example.txt').exists():
    print("文件存在")

# 读取文件内容
file_path = p / 'example.txt'
if file_path.exists():
    content = file_path.read_text()
    print(content)

# 创建目录
new_dir = p / 'new_folder'
new_dir.mkdir(exist_ok=True)

# 删除文件
file_to_remove = p / 'remove_me.txt'
if file_to_remove.exists():
    file_to_remove.unlink()

pathlib让路径操作更简单,更具可读性。


7. 小结

  • open()读写文件,配合with语句管理资源。
  • os模块处理文件和目录的基本操作(创建、删除、重命名、检查存在)。
  • os.listdiros.walk遍历目录。
  • 推荐用pathlib模块,写出简洁优雅的路径和文件操作代码。