Python 的 os 模块提供了与操作系统交互的功能。它提供了很多函数,用于读取或修改系统目录和文件、运行系统命令、处理系统环境变量等。以下是一些常用的 os 模块函数及其简要说明:
一、目录和文件操作
-
获取当前工作目录
os.getcwd()
import os current_dir = os.getcwd() print(f"当前工作目录: {current_dir}")
-
改变当前工作目录
os.chdir(path)
import os os.chdir("/path/to/new/directory")
-
列出指定目录下的文件和子目录
os.listdir(path)
import os contents = os.listdir("/path/to/directory") print(f"目录内容: {contents}")
-
创建目录
os.mkdir(path)
创建单级目录os.makedirs(path)
递归创建多层目录
import os os.mkdir("/path/to/new/directory") # 创建单级目录 os.makedirs("/path/to/new/nested/directory") # 递归创建多层目录
-
删除目录
os.rmdir(path)
删除单级空目录os.removedirs(path)
递归删除空目录
import os os.rmdir("/path/to/empty/directory") # 删除单级空目录 os.removedirs("/path/to/nested/empty/directories") # 递归删除空目录
-
删除文件
os.remove(path)
import os os.remove("/path/to/file.txt")
-
重命名文件或目录
os.rename(src, dst)
import os os.rename("/path/to/oldname.txt", "/path/to/newname.txt")
二、路径操作
-
连接路径
os.path.join(path, *paths)
import os path = os.path.join("/home", "user", "documents", "file.txt") print(f"连接后的路径: {path}")
-
获取绝对路径
os.path.abspath(path)
import os abspath = os.path.abspath("/path/to/file.txt") print(f"绝对路径: {abspath}")
-
获取基本文件名
os.path.basename(path)
import os filename = os.path.basename("/path/to/file.txt") print(f"基本文件名: {filename}")
-
获取目录名
os.path.dirname(path)
import os dirname = os.path.dirname("/path/to/file.txt") print(f"目录名: {dirname}")
三、文件和目录检查
-
检查路径是否存在
os.path.exists(path)
import os exists = os.path.exists("/path/to/file_or_directory") print(f"路径是否存在: {exists}")
-
检查路径是否为文件
os.path.isfile(path)
import os isfile = os.path.isfile("/path/to/file.txt") print(f"路径是否为文件: {isfile}")
-
检查路径是否为目录
os.path.isdir(path)
import os isdir = os.path.isdir("/path/to/directory") print(f"路径是否为目录: {isdir}")
四、文件属性
-
获取文件大小
os.path.getsize(path)
import os size = os.path.getsize("/path/to/file.txt") print(f"文件大小: {size} 字节")
五、执行系统命令
os.system(command)
:在子shell中执行系统命令。
import os
os.system('ls -l') # 执行系统命令ls -l
六、环境变量操作
os.environ
:代表当前的环境变量字典。os.getenv(key, default=None)
:获取环境变量的值,若不存在则返回默认值。os.putenv(key, value)
:设置环境变量的值。
import os
# 获取环境变量
path = os.getenv('PATH')
print(f'PATH environment variable: {path}')
# 设置环境变量
os.putenv('MY_VAR', 'my_value')
七、进程管理
虽然os
模块提供了如os.fork()
(Unix系统)等进程管理函数,但通常建议使用更高级的subprocess
模块来处理进程管理。
八、其他实用函数
os.urandom(size)
:生成指定字节数的随机字节串,常用于加密。
import os
random_bytes = os.urandom(16) # 生成16字节的随机数据
print(random_bytes)
九、文件描述符操作
os.fdopen(fd, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
:根据文件描述符返回一个文件对象。os.dup(fd)
:复制文件描述符。os.dup2(fd, fd2)
:将一个文件描述符复制到另一个文件描述符。
这些函数通常用于低级的文件I/O操作,例如在使用os.pipe()
创建的管道中。
十、设备文件操作
os.makedev(major, minor)
:根据主设备号和次设备号创建一个原始设备号,主要在Unix-like系统中使用。os.major(device)
和os.minor(device)
:分别从原始设备号中提取主设备号和次设备号。
注意事项
- 在使用
os
模块进行文件和目录操作时,需要注意权限问题,确保程序有足够的权限进行读写或执行操作。 - 在处理文件和目录路径时,要注意路径分隔符在不同操作系统中的差异(例如,Windows使用
\
,而Unix-like系统使用/
)。os.path
模块提供了跨平台的路径操作函数,可以自动处理这些差异。 - 当使用
os.system()
执行系统命令时,要小心注入攻击等安全问题。如果可能的话,使用subprocess
模块来替代它,因为它提供了更强大且安全的功能来执行外部命令。