深入浅出之OS模块(python)

os 模块是 Python 标准库中的一个模块,它提供了一种方便的使用操作系统功能的方式。通过 os 模块,Python 程序可以执行许多与操作系统交互的任务,如文件和目录管理、进程管理、环境变量处理等。下面是一些常用的 os 模块功能及其示例:

一. 文件和目录管理

1.1、创建、删除和重命名文件和目录

  • os.makedirs(name, mode=0o777, exist_ok=False): 递归地创建目录。如果 exist_ok 为 True,则目标目录已存在时不会抛出异常。
  • os.removedirs(name): 递归地删除目录,但只有当目录为空时才会成功。
  • os.mkdir(path, mode=0o777): 创建单个目录。
  • os.rmdir(path): 删除单个空目录。
  • os.remove(path): 删除文件。
  • os.rename(src, dst): 重命名文件或目录。

1.2、检查文件和目录

  • os.path.exists(path): 检查路径是否存在。
  • os.path.isdir(path): 检查路径是否为目录。
  • os.path.isfile(path): 检查路径是否为文件。
  • os.path.islink(path): 检查路径是否为链接(在 Unix 系统上有效)。
  • os.path.ismount(path): 检查路径是否为挂载点(在 Unix 系统上有效)。

1.3、遍历目录

  • os.listdir(path='.'): 返回指定目录下的所有文件和目录名。
  • os.scandir(path='.'): 返回一个包含 os.DirEntry 对象的迭代器,这些对象提供了有关目录条目的信息(Python 3.5+)。

示例

import os

# 检查文件是否存在
if os.path.exists('example.txt'):
    print('文件存在')

# 创建目录
os.makedirs('new_directory/sub_directory', exist_ok=True)

# 列出目录内容
print(os.listdir('.'))

# 改变当前工作目录
os.chdir('new_directory')
print('当前工作目录:', os.getcwd())

# 删除文件
os.remove('example.txt')

# 删除目录
os.removedirs('sub_directory')

二. 文件路径操作

  • os.path.join(path, *paths): 将多个路径组件合并成一个路径。
  • os.path.abspath(path): 返回路径的绝对形式。
  • os.path.relpath(path, start='.'): 返回从 start 到 path 的相对路径。
  • os.path.normpath(path): 规范化路径字符串,将冗余的分隔符、父目录引用(..)和当前目录引用(.)转换为标准形式。
  • os.path.split(path): 将路径分割为目录和文件名。
  • os.path.splitext(path): 将路径分割为文件名和扩展名。
  • os.path.basename(path): 返回路径中的文件名。
  • os.path.dirname(path): 返回路径中的目录名。
  • os.path.commonprefix(list): 返回列表(路径字符串的列表)中所有路径的公共前缀。
  • os.path.realpath(path): 返回指定文件或目录的绝对路径,解析所有符号链接、冗余名称元素和相对路径引用。

示例

import os

# 合并路径
full_path = os.path.join('parent_directory', 'sub_directory', 'file.txt')
print('合并后的路径:', full_path)

# 获取绝对路径
abs_path = os.path.abspath('.')
print('绝对路径:', abs_path)

# 获取文件名
file_name = os.path.basename(full_path)
print('文件名:', file_name)

# 判断是否为目录
print('是否为目录:', os.path.isdir('new_directory'))

三、文件和目录的权限与时间戳

  • os.chmod(path, mode): 更改文件或目录的权限。
  • os.chown(path, uid, gid): 更改文件或目录的所有者和组(在 Unix 系统上有效)。
  • os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True): 更新文件或目录的访问和修改时间。

四. 环境变量和进程管理

  • os.environ: 获取或设置环境变量。
  • os.system(command): 在子终端执行系统命令(不推荐用于生产环境,因为它存在安全风险)。
  • os.spawn*() 和 os.fork(): 创建新的进程(os.fork() 仅在 Unix 系统上可用)。
  • os.exec*(): 执行一个新的程序,替换当前进程。
  • os.getpid(): 获取当前进程 ID。
  • os.getppid(): 获取父进程 ID(仅在 Unix 系统上可用)。

示例

import os

# 获取环境变量
print('PATH:', os.environ.get('PATH'))

# 设置环境变量
os.environ['MY_VAR'] = 'my_value'
print('MY_VAR:', os.environ.get('MY_VAR'))

# 在子终端执行命令
os.system('echo Hello, World!')

五、 操作系统接口

  • os.name: 返回操作系统的名称(如 'posix''nt''java''ce')。
  • os.uname(): 返回识别当前操作系统的信息(在 Unix 系统上有效)。
  • os.urandom(size): 返回大小为 size 的随机字节串,适合用于加密应用。

六. 错误处理

  • OSError: 这是一个异常类,当 os 模块函数遇到操作系统错误时会被引发。

 七、示例

import os

# 创建目录
os.makedirs('example_dir/subdir', exist_ok=True)

# 列出目录内容
print(os.listdir('example_dir'))

# 更改当前工作目录
os.chdir('example_dir')

# 检查当前工作目录
print('当前工作目录:', os.getcwd())

# 创建文件
with open('example.txt', 'w') as f:
    f.write('Hello, World!')

# 获取文件的绝对路径
abs_path = os.path.abspath('example.txt')
print('文件的绝对路径:', abs_path)

# 删除文件
os.remove('example.txt')

# 删除目录(如果为空)
os.rmdir('subdir')
# 或者使用 os.removedirs('example_dir/subdir') 如果需要递归删除非空目录(但上面已经删除了 subdir)

# 设置环境变量
os.environ['MY_VAR'] = 'my_value'
print('MY_VAR:', os.environ.get('MY_VAR'))

# 获取进程 ID
print('当前进程 ID:', os.getpid())

八、注意事项

  • 使用 os.system() 执行系统命令时,要非常小心,特别是当命令包含来自不可信来源的输入时,因为这可能导致安全漏洞(如命令注入)。
  • 对于跨平台开发,要注意某些 os 模块函数可能在特定操作系统上不可用或表现不同。

os 模块提供了丰富的功能,使得 Python 程序能够与操作系统进行深入的交互。通过合理使用这些功能,可以大大增强程序的灵活性和功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩瀚之水_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值