在本章中,我们将探讨如何使用 Python 的 os
模块来操作文件和目录。os
模块提供了一种方便的方法来使用操作系统依赖的功能,例如读写文件、创建或删除目录等。
文件和目录的基本操作
获取当前工作目录
获取当前工作目录可以通过调用 os.getcwd()
函数来实现。此函数返回一个字符串,表示当前的工作目录路径。
import os current_directory = os.getcwd() print(current_directory)
改变当前工作目录
改变当前工作目录可以使用 os.chdir(path)
函数。此函数将当前工作目录更改为指定的路径。如果路径不存在或没有足够的权限,将会抛出异常。
import os new_directory = "/path/to/new/directory" os.chdir(new_directory) print(os.getcwd())
创建目录
创建新目录可以使用 os.mkdir(path)
函数。该函数会创建一个名为 path
的目录。如果目录已存在或者没有权限创建,将会抛出异常。
import os new_directory = "/path/to/new/directory" os.mkdir(new_directory)
创建多级目录
如果需要创建多级目录(即父目录和子目录),可以使用 os.makedirs(path)
函数。该函数会在路径中不存在的情况下递归地创建所有必要的目录。
import os multi_level_directory = "/path/to/new/multi/level/directory" os.makedirs(multi_level_directory)
删除目录
删除空目录可以使用 os.rmdir(path)
函数。如果目录不为空,将会抛出异常。若要删除非空目录,应使用 shutil.rmtree()
函数。
import os directory_to_delete = "/path/to/delete" os.rmdir(directory_to_delete)
删除多级目录
如果需要删除包含文件和其他子目录的多级目录,可以使用 shutil.rmtree(path)
函数。
import shutil multi_level_directory = "/path/to/delete/multi/level/directory" shutil.rmtree(multi_level_directory)
文件和目录的属性
获取文件或目录信息
使用 os.stat(path)
函数可以获取文件或目录的信息。返回的对象包含多个属性,如修改时间、访问时间、文件大小等。
import os file_path = "/path/to/file.txt" file_info = os.stat(file_path) print("文件大小:", file_info.st_size) print("最后修改时间:", file_info.st_mtime)
修改文件或目录的权限
使用 os.chmod(path, mode)
函数可以修改文件或目录的权限。这里的 mode
参数是一个八进制数,代表所需的权限。
import os file_path = "/path/to/file.txt" os.chmod(file_path, 0o644) # 设置为可读写
更改文件或目录的所有者
更改文件或目录的所有者可以使用 os.chown(path, uid, gid)
函数。这里 uid
和 gid
分别是用户ID和组ID。需要注意的是,并不是所有的系统都支持此功能。
import os file_path = "/path/to/file.txt" os.chown(file_path, uid=1000, gid=1000)
路径处理
组合路径
使用 os.path.join(path1[, path2[, ...]])
函数可以组合多个路径部分,返回一个路径字符串。
import os path1 = "/home/user" path2 = "documents" full_path = os.path.join(path1, path2) print(full_path)
获取路径中的组件
使用 os.path.split(path)
函数可以将路径拆分为头部和尾部两部分。通常,头部包含目录名,尾部包含文件名。
import os path = "/home/user/documents/file.txt" head, tail = os.path.split(path) print(head) # 输出: /home/user/documents print(tail) # 输出: file.txt
获取文件扩展名
使用 os.path.splitext(path)
函数可以从路径中分离文件名和扩展名。
import os path = "/home/user/documents/file.txt" root, ext = os.path.splitext(path) print(root) # 输出: /home/user/documents/file print(ext) # 输出: .txt
遍历目录
列出目录中的内容
使用 os.listdir(path)
函数可以列出指定目录下的所有文件和子目录。
import os directory = "/path/to/directory" contents = os.listdir(directory) for item in contents: print(item)
递归遍历目录树
使用 os.walk(top)
函数可以递归地遍历目录树中的所有子目录和文件。
-- -------------------- ---- ------- ------ -- --------- - -------------------- --- ----- ----- ----- -- ------------------- ------------- -------- --- -------- -- ----- -------- ---- ------------ --- --------- -- ------ -------- --- -------------
通过本章的学习,你应该能够熟练地使用 os
模块提供的各种方法来操作文件和目录了。这些基本技能对于任何希望深入学习 Python 编程的人来说都是必不可少的。