python中的高级文件操作
在Python中,除了基本的文件读写和目录操作外,还有一些高级的文件和目录操作,如删除文件、重命名文件和目录、以及获取文件的基本信息等。这些操作通常通过os
模块和pathlib
模块来实现。下面我将详细介绍这些操作,并给出相应的示例。
删除文件
- 使用
os
模块:os.remove(path)
函数用于删除文件。如果文件不存在,将引发FileNotFoundError
异常。 - 使用
pathlib
模块:Path.unlink()
方法也可以用来删除文件,其工作方式类似于os.remove()
。
示例:
import os
from pathlib import Path# 使用os模块删除文件
file_path = 'example.txt'
if os.path.exists(file_path):os.remove(file_path)print(f"{file_path} 已删除")
else:print(f"{file_path} 不存在")# 使用pathlib模块删除文件
file_path_pathlib = Path('example.txt')
if file_path_pathlib.exists():file_path_pathlib.unlink()print(f"{file_path_pathlib} 已删除")
else:print(f"{file_path_pathlib} 不存在")
重命名文件和目录
- 使用
os
模块:os.rename(src, dst)
函数用于重命名文件或目录。如果目标路径已存在,它将被覆盖。 - 使用
pathlib
模块:Path.rename(target)
方法也可以用来重命名文件或目录,其中target
是新的路径。
示例:
import os
from pathlib import Path# 使用os模块重命名文件
old_file_path = 'old_example.txt'
new_file_path = 'new_example.txt'
if os.path.exists(old_file_path):os.rename(old_file_path, new_file_path)print(f"{old_file_path} 已重命名为 {new_file_path}")
else:print(f"{old_file_path} 不存在")# 使用pathlib模块重命名文件
old_file_path_pathlib = Path('old_example.txt')
new_file_path_pathlib = Path('another_example.txt')
if old_file_path_pathlib.exists():old_file_path_pathlib.rename(new_file_path_pathlib)print(f"{old_file_path_pathlib} 已重命名为 {new_file_path_pathlib}")
else:print(f"{old_file_path_pathlib} 不存在")# 重命名目录(与重命名文件相同)
old_dir_path = 'old_dir'
new_dir_path = 'new_dir'
if os.path.exists(old_dir_path):os.rename(old_dir_path, new_dir_path)print(f"{old_dir_path} 已重命名为 {new_dir_path}")
else:print(f"{old_dir_path} 不存在")
获取文件的基本信息
获取文件的基本信息通常涉及文件的元数据,如大小、修改时间等。这些可以通过os.path
模块和os.stat()
函数或pathlib.Path
对象的stat()
方法来实现。
示例:
import os
from pathlib import Path
from datetime import datetime# 使用os模块获取文件信息
file_path = 'example.txt'
if os.path.exists(file_path):file_stat = os.stat(file_path)print(f"文件大小: {file_stat.st_size} 字节")print(f"最后修改时间: {datetime.fromtimestamp(file_stat.st_mtime)}")
else:print(f"{file_path} 不存在")# 使用pathlib模块获取文件信息
file_path_pathlib = Path('example.txt')
if file_path_pathlib.exists():file_stat = file_path_pathlib.stat()print(f"文件大小: {file_stat.st_size} 字节")print(f"最后修改时间: {datetime.fromtimestamp