在 Python 编程领域,对文件和目录进行操作是开发过程中的常见需求。os
模块作为 Python 与操作系统交互的重要接口,提供了丰富且强大的功能,用于处理文件与目录相关任务。本博客通过代码示例系统梳理os
模块的文件与目录操作方法,方便日后复习回顾。
使用os.access()
函数可以检查文件或目录是否具有特定的访问权限,例如可读、可写、可执行。该函数接受两个参数:文件或目录路径、权限标志。
import os
file_path = "test.txt"
# 检查文件是否可读
if os.access(file_path, os.R_OK):
print(f"{file_path} 可读")
# 检查文件是否可写
if os.access(file_path, os.W_OK):
print(f"{file_path} 可写")
# 检查文件是否可执行
if os.access(file_path, os.X_OK):
print(f"{file_path} 可执行")
权限标志常用的有:
os.R_OK
:检查可读性os.W_OK
:检查可写性os.X_OK
:检查可执行性os.F_OK
:检查文件是否存在 os.getcwd()
函数用于获取当前工作目录的路径。
import os
current_dir = os.getcwd()
print(f"当前工作目录:{current_dir}")
os.rename()
函数用于重命名文件或目录,接受原名称和新名称作为参数。
import os
old_name = "old_file.txt"
new_name = "new_file.txt"
try:
os.rename(old_name, new_name)
print(f"{old_name} 已重命名为 {new_name}")
except FileNotFoundError:
print(f"{old_name} 不存在")
except FileExistsError:
print(f"{new_name} 已存在")
os.remove()
函数用于删除指定的文件。
import os
file_to_delete = "test_file.txt"
try:
os.remove(file_to_delete)
print(f"{file_to_delete} 已删除")
except FileNotFoundError:
print(f"{file_to_delete} 不存在")
os.stat()
函数用于获取文件或目录的详细信息,如文件大小、修改时间等。
import os
file_path = "example.txt"
file_stat = os.stat(file_path)
print(f"文件大小:{file_stat.st_size} 字节")
print(f"最后修改时间:{file_stat.st_mtime}")
返回的file_stat
对象包含多个属性:
st_size
:文件大小(字节)st_mtime
:最后修改时间(时间戳)st_ctime
:创建时间(时间戳)os.mkdir()
函数创建一个新目录。import os
new_dir = "new_folder"
try:
os.mkdir(new_dir)
print(f"{new_dir} 目录已创建")
except FileExistsError:
print(f"{new_dir} 目录已存在")
os.makedirs()
函数可以创建多级目录。import os
nested_dir = "parent/child/grandchild"
try:
os.makedirs(nested_dir)
print(f"{nested_dir} 目录已创建")
except FileExistsError:
print(f"{nested_dir} 目录已存在")
os.rmdir()
函数用于删除指定的空目录。import os
empty_dir = "empty_folder"
try:
os.rmdir(empty_dir)
print(f"{empty_dir} 目录已删除")
except FileNotFoundError:
print(f"{empty_dir} 目录不存在")
except OSError:
print(f"{empty_dir} 目录非空,无法删除")
os.removedirs()
函数可递归删除目录及其子目录(需确保目录为空)。import os
nested_dir = "parent/child/grandchild"
try:
os.removedirs(nested_dir)
print(f"{nested_dir} 目录已递归删除")
except OSError:
print(f"{nested_dir} 删除失败,可能存在非空目录")
os.listdir()
函数返回指定目录下的所有文件和子目录的名称列表。
import os
target_dir = "."
contents = os.listdir(target_dir)
for item in contents:
print(item)
os.path.join()
函数用于拼接路径,会根据操作系统自动选择正确的路径分隔符。import os
base_path = "/home/user"
sub_path = "documents"
file_name = "example.txt"
full_path = os.path.join(base_path, sub_path, file_name)
print(f"完整路径:{full_path}")
os.path.exists()
:检查路径是否存在。
os.path.isfile()
:判断路径是否为文件。os.path.isdir()
:判断路径是否为目录。import os
check_path = "/home/user/documents"
if os.path.exists(check_path):
print(f"{check_path} 存在")
else:
print(f"{check_path} 不存在")
os.walk()
函数用于递归遍历目录树,返回当前目录、子目录列表和文件列表。
import os
for root, dirs, files in os.walk("."):
print(f"当前目录:{root}")
print(f"子目录:{dirs}")
print(f"文件:{files}")
print("-" * 30)
其中:
root
:当前遍历的目录路径dirs
:当前目录下的子目录列表files
:当前目录下的文件列表 os.statvfs()
函数用于获取文件系统的统计信息,如可用空间、总空间等。
import os
file_system_path = "/"
fs_stat = os.statvfs(file_system_path)
print(f"文件系统总空间:{fs_stat.f_frsize * fs_stat.f_blocks} 字节")
print(f"可用空间:{fs_stat.f_frsize * fs_stat.f_bavail} 字节")
返回的fs_stat
对象包含多个属性,例如:
f_frsize
:基本文件系统块大小f_blocks
:文件系统总块数f_bfree
:空闲块数f_bavail
:非超级用户可获取的空闲块数 Python 的os
模块提供了一套完整的文件与目录操作工具,从基础的权限检查、文件增删改查,到复杂的目录遍历和文件系统信息获取,都能轻松实现。在实际编程中,合理使用这些方法可以高效处理文件管理任务。同时,建议结合try-except
语句进行异常处理,以确保程序在面对文件或目录不存在、权限不足等问题时稳定运行。希望这篇博客能帮助你系统复习os
模块的操作方法,在项目开发中灵活运用!