Python的 os库是一个标准的操作系统接口,它提供了与操作系统进行交互的多种方法,如文件操作、目录操作、权限控制、进程管理等。通过 os库,Python程序可以实现对底层操作系统的访问和控制。下面将详细介绍 os库的常用操作和对应实例,逐步分析每个命令的用法及其原理。
一、os库的常用操作汇总
| 操作类别 | 常用方法/函数 | 功能描述 |
|---|---|---|
| 文件与目录操作 | os.getcwd() |
获取当前工作目录 |
| 文件与目录操作 | os.chdir(path) |
改变当前工作目录 |
| 文件与目录操作 | os.listdir(path) |
列出指定目录下的文件和目录 |
| 文件与目录操作 | os.mkdir(path) |
创建目录 |
| 文件与目录操作 | os.makedirs(path) |
递归创建多级目录 |
| 文件与目录操作 | os.rmdir(path) |
删除目录 |
| 文件与目录操作 | os.remove(path) |
删除文件 |
| 文件与目录操作 | os.rename(src, dst) |
重命名文件或目录 |
| 文件与目录操作 | os.path.exists(path) |
检查文件或目录是否存在 |
| 文件与目录操作 | os.path.isfile(path) |
判断是否为文件 |
| 文件与目录操作 | os.path.isdir(path) |
判断是否为目录 |
| 进程管理 | os.system(command) |
执行系统命令 |
| 环境变量操作 | os.getenv(key) |
获取环境变量值 |
| 环境变量操作 | os.putenv(key, value) |
设置环境变量 |
| 文件权限与属性管理 | os.chmod(path, mode) |
修改文件权限 |
| 文件权限与属性管理 | os.stat(path) |
获取文件属性 |
| 文件路径操作 | os.path.join(path, *paths) |
连接路径 |
| 文件路径操作 | os.path.abspath(path) |
获取文件的绝对路径 |
| 文件路径操作 | os.path.split(path) |
拆分文件路径,返回路径和文件名 |
| 文件路径操作 | os.path.splitext(path) |
拆分文件路径,返回路径和扩展名 |
二、os库常用操作详解
1. 获取当前工作目录:os.getcwd()
import os
current_directory = os.getcwd()
print(f"当前工作目录是:{current_directory}")
解释:
os.getcwd() 用于获取当前工作目录,返回的是一个字符串,表示当前正在运行的脚本所在的目录。这个函数在文件路径操作中非常常用。
2. 改变工作目录:os.chdir(path)
os.chdir('/path/to/directory')
print(f"工作目录已经更改为:{os.getcwd()}")
解释:
os.chdir(path) 用于改变当前工作目录到指定的路径。路径可以是绝对路径,也可以是相对路径。通常用于需要在不同目录间切换的场景。
3. 列出指定目录下的文件和目录:os.listdir(path)
files_and_dirs = os.listdir('/path/to/directory')
print(f"目录内容:{files_and_dirs}")
解释:
os.listdir(path) 返回指定目录下的所有文件和目录名称,结果是一个列表形式。如果不提供路径,则默认列出当前工作目录的内容。
4. 创建目录:os.mkdir(path)
os.mkdir('/path/to/new_directory')
print("目录创建成功")
解释:
os.mkdir(path) 用于创建一个单级目录。如果目录已经存在,会抛出 FileExistsError 错误。如果需要创建多级目录,请使用 os.makedirs()。
5. 删除目录:os.rmdir(path)
os.rmdir('/path/to/new_directory')
print("目录删除成功")
解释:
os.rmdir(path) 删除指定路径的目录,但前提是该目录必须是空的。如果目录中包含文件或其他子目录,会抛出 OSError 错误。
6. 删除文件:os.remove(path)
os.remove('/path/to/file.txt')
print("文件删除成功")
解释:
os.remove(path) 用于删除指定路径的文件,删除目录时会报错。
7. 重命名文件或目录:os.rename(src, dst)
os.rename('/path/to/file.txt', '/path/to/new_file.txt')
print("文件重命名成功")
解释:
os.rename(src, dst) 用于重命名文件或目录。如果目标文件已存在,可能会覆盖它,因此使用时要注意目标文件的状态。
8. 检查文件或目录是否存在:os.path.exists(path)
if os.path.exists('/path/to/file.txt'):
print("文件存在")
else:
print("文件不存在")
解释:
os.path.exists(path) 返回一个布尔值,判断给定路径是否存在。无论是文件还是目录,只要存在该路径,函数就返回 True。
9. 判断是否为文件:os.path.isfile(path)
if os.path.isfile('/path/to/file.txt'):
print("这是一个文件")
else:
print("这不是一个文件")
解释:
os.path.isfile(path) 判断路径是否指向一个文件,返回 True 或 False。
10. 判断是否为目录:os.path.isdir(path)
if os.path.isdir('/path/to/directory'):
print("这是一个目录")
else:
print("这不是一个目录")
解释:
os.path.isdir(path) 用于判断路径是否指向一个目录,返回值同样为 True 或 False。
11. 执行系统命令:os.system(command)
os.system('ls -la')
解释:
os.system(command) 直接调用系统的shell来执行命令。在Unix系统中,这个命令会执行shell命令;在Windows中,它会执行cmd命令。返回的值是命令执行的返回码(通常为0表示成功,非0表示失败)。
12. 获取环境变量:os.getenv(key)
path_variable = os.getenv('PATH')
print(f"环境变量PATH的值为:{path_variable}")
解释:
os.getenv(key) 用于获取系统的环境变量值。如果指定的环境变量不存在,则返回 None。
13. 修改文件权限:os.chmod(path, mode)
os.chmod('/path/to/file.txt', 0o777)
print("文件权限修改成功")
解释:
os.chmod(path, mode) 用于更改文件或目录的权限。mode 是一个八进制数,如 0o777 表示读写执行权限。
14. 获取文件属性:os.stat(path)
file_stat = os.stat('/path/to/file.txt')
print(f"文件大小为:{file_stat.st_size} 字节")
解释:
os.stat(path) 返回一个包含文件属性的对象,包含文件大小、创建时间、修改时间等信息。属性名如 st_size 表示文件大小,st_mtime 表示最后修改时间等。
15. 文件路径拼接:os.path.join(path, *paths)
full_path = os.path.join('/path', 'to', 'file.txt')
print(f"完整路径为:{full_path}")
解释:
os.path.join(path, *paths) 用于智能地拼接路径,能够根据操作系统自动调整路径分隔符。
16. 获取文件的绝对路径:os.path.abspath(path)
absolute_path = os.path.abspath('file.txt')
print(f"文件的绝对路径为:{absolute_path}")
解释:
os.path.abspath(path) 返回给定路径的绝对路径,常用于确定文件的完整路径。
17. 拆分文件路径和文件名:os.path.split(path)
directory, filename = os.path.split('/path/to/file.txt')
print(f"目录为:{directory}, 文件名为:{filename}")
解释:
os.path.split(path) 将路径分为目录和文件名两部分,返回一个元组 (directory, filename)。
18. 获取文件扩展名:os.path.splitext(path)
filename, file_extension = os.path.splitext('/path/to/file.txt')
print(f"文件名为:{filename
}, 扩展名为:{file_extension}")
解释:
os.path.splitext(path) 拆分路径和扩展名,返回文件名和扩展名的元组。常用于判断文件类型或执行文件扩展名相关的操作。
三、总结
Python 的 os 库提供了丰富的与操作系统交互的功能,涵盖文件操作、目录操作、路径操作、权限控制以及系统命令执行等。在日常开发中,掌握这些基础的 os 方法,能够有效提高开发效率,且可以处理多种系统级别的任务。
本次介绍的 os库操作通过实例演示和解释,涵盖了文件和目录操作、进程管理、环境变量操作、权限管理等多个重要功能。合理运用这些功能,可以使Python脚本轻松与操作系统进行深度交互。


