【python】os模块详解

Python 的 os 模块提供了与操作系统交互的功能。它提供了很多函数,用于读取或修改系统目录和文件、运行系统命令、处理系统环境变量等。以下是一些常用的 os 模块函数及其简要说明:

一、目录和文件操作

  1. 获取当前工作目录

    • os.getcwd()
    import os
    current_dir = os.getcwd()
    print(f"当前工作目录: {current_dir}")
    
  2. 改变当前工作目录

    • os.chdir(path)
    import os
    os.chdir("/path/to/new/directory")
    
  3. 列出指定目录下的文件和子目录

    • os.listdir(path)
    import os
    contents = os.listdir("/path/to/directory")
    print(f"目录内容: {contents}")
    
  4. 创建目录

    • os.mkdir(path) 创建单级目录
    • os.makedirs(path) 递归创建多层目录
    import os
    os.mkdir("/path/to/new/directory")  # 创建单级目录
    os.makedirs("/path/to/new/nested/directory")  # 递归创建多层目录
    
  5. 删除目录

    • os.rmdir(path) 删除单级空目录
    • os.removedirs(path) 递归删除空目录
    import os
    os.rmdir("/path/to/empty/directory")  # 删除单级空目录
    os.removedirs("/path/to/nested/empty/directories")  # 递归删除空目录
    
  6. 删除文件

    • os.remove(path)
    import os
    os.remove("/path/to/file.txt")
    
  7. 重命名文件或目录

    • os.rename(src, dst)
    import os
    os.rename("/path/to/oldname.txt", "/path/to/newname.txt")
    

二、路径操作

  1. 连接路径

    • os.path.join(path, *paths)
    import os
    path = os.path.join("/home", "user", "documents", "file.txt")
    print(f"连接后的路径: {path}")
    
  2. 获取绝对路径

    • os.path.abspath(path)
    import os
    abspath = os.path.abspath("/path/to/file.txt")
    print(f"绝对路径: {abspath}")
    
  3. 获取基本文件名

    • os.path.basename(path)
    import os
    filename = os.path.basename("/path/to/file.txt")
    print(f"基本文件名: {filename}")
    
  4. 获取目录名

    • os.path.dirname(path)
    import os
    dirname = os.path.dirname("/path/to/file.txt")
    print(f"目录名: {dirname}")
    

三、文件和目录检查

  1. 检查路径是否存在

    • os.path.exists(path)
    import os
    exists = os.path.exists("/path/to/file_or_directory")
    print(f"路径是否存在: {exists}")
    
  2. 检查路径是否为文件

    • os.path.isfile(path)
    import os
    isfile = os.path.isfile("/path/to/file.txt")
    print(f"路径是否为文件: {isfile}")
    
  3. 检查路径是否为目录

    • os.path.isdir(path)
    import os
    isdir = os.path.isdir("/path/to/directory")
    print(f"路径是否为目录: {isdir}")
    

四、文件属性

  1. 获取文件大小

    • 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模块来替代它,因为它提供了更强大且安全的功能来执行外部命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值