Python的os库


os 模块是 Python 标准库中的一个重要模块,它提供了与操作系统交互的功能。除了 os.path 之外, os 模块还包含了许多其他有用的函数和子模块。下面是一些常见的 os 模块功能和相关方法:

os 模块常用功能

  1. 进程管理

    • os.system(command):执行一个 shell 命令,并等待命令完成。
    • os.exec*():替换当前进程的图像。
    • os.spawn*():创建新的进程。
    • os.fork():在 UNIX 系统上创建一个新的进程。
    • os.wait():等待子进程完成。
    • os.popen():创建一个管道,通过子进程运行一个命令,并捕获其输出。
  2. 环境变量

    • os.environ:获取当前进程的环境变量,这是一个类似于字典的对象。
    • os.getenv(key[, default]):获取环境变量的值,如果不存在则返回默认值。
    • os.putenv(key, value):设置环境变量。
    • os.unsetenv(key):删除环境变量。
  3. 文件操作

    • os.open(name, flags[, mode]):打开一个文件,并返回一个文件描述符。
    • os.close(fd):关闭一个文件描述符。
    • os.read(fd, n):读取文件描述符的数据。
    • os.write(fd, b):写入数据到文件描述符。
    • os.remove(path):删除文件。
    • os.rename(src, dst):重命名文件。
    • os.chmod(path, mode):改变文件权限。
    • os.chown(path, user, group):改变文件所有者和组。
    • os.truncate(path, length):截断文件大小。
    • os.sync():同步文件系统缓冲区。
  4. 目录操作

    • os.mkdir(path[, mode]):创建一个目录。
    • os.makedirs(name[, mode]):递归地创建目录。
    • os.rmdir(path):删除一个空目录。
    • os.removedirs(path):递归地删除空目录。
    • os.listdir(path):列出目录内容。
    • os.chdir(path):改变当前工作目录。
    • os.getcwd():获取当前工作目录。
  5. 进程状态

    • os.getpid():获取当前进程 ID。
    • os.getppid():获取父进程 ID。
    • os.getuid():获取当前进程的有效用户 ID。
    • os.geteuid():获取当前进程的有效用户 ID。
    • os.getgid():获取当前进程的有效组 ID。
    • os.getegid():获取当前进程的有效组 ID。
    • os.getlogin():获取登录用户名。
    • os.getgroups():获取当前进程的附加组 ID 列表。
  6. 信号处理

    • os.kill(pid, sig):向一个进程发送信号。
    • os.killpg(pgrp, sig):向一组进程发送信号。
    • os.signal(sig, handler):设置信号处理程序。
    • os.strerror(errnum):将错误号转换为错误信息。
  7. 其他

    • os.urandom(n):生成 n 字节的随机数据,适合加密使用。
    • os.name:返回操作系统的名字(‘nt’, ‘posix’, ‘os2’, ‘ce’, ‘java’)。
    • os.uname():返回一个关于当前操作系统的信息元组。

这些功能提供了对底层操作系统的一些直接控制能力,可以让你编写出能够与操作系统交互的脚本和程序。

mkdir和makedir的区别

os.mkdir() 只能创建单层目录
os.makedirs() 可以创建多级目录结构,即递归创建目录。

os.mkdir(path[, mode])

这个函数用于创建一个单一的目录。如果目录路径中包含任何中间层级的目录,并且这些中间目录不存在,那么 os.mkdir() 将会抛出一个 FileNotFoundError 异常。

示例

import os

# 创建名为 "my_directory" 的目录
os.mkdir("my_directory")

os.makedirs(name[, mode])

这个函数可以创建一个目录以及所有中间层级的目录。如果路径中的中间目录不存在,os.makedirs() 会自动创建它们。这使得你可以一次指定一个完整的目录路径,而不用担心路径中的中间目录是否已经存在。

示例

import os

# 创建名为 "parent/child" 的目录结构
os.makedirs("parent/child")

# 如果 "parent" 目录不存在,它也会被创建

递归创建

递归创建的意思是,在创建目标目录时,如果路径中有任何中间层级的目录不存在,这些中间目录也会被创建。例如,假设你需要创建一个路径 a/b/c 的目录,但 ab 都不存在。使用 os.makedirs() 可以一次性创建 aa/ba/b/c 这三个目录。

示例

import os

# 创建名为 "a/b/c" 的目录结构
os.makedirs("a/b/c")

# 此时 "a", "a/b", 和 "a/b/c" 都会被创建

注意事项

  • 如果使用 os.makedirs() 并且某些中间目录已存在,不会有任何问题。但是,如果目标目录已经存在,将会抛出一个异常。你可以通过传递 exist_ok=True 参数来避免这个异常,这样即使目标目录已存在也不会抛出异常。

    示例

    os.makedirs("a/b/c", exist_ok=True)
    
  • 如果你只需要创建单个目录,使用 os.mkdir() 更简单也更高效。

  • 如果需要创建多级目录结构,使用 os.makedirs() 更方便。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值