1
0

Python:OS 模块

This commit is contained in:
周中平 2023-08-29 10:54:45 +08:00
parent ed2d41a393
commit 8286202c6d
Signed by: zhouzhongping
GPG Key ID: 6666822800008000

View File

@ -0,0 +1,129 @@
---
title: os --- 多种操作系统接口
description: os --- 多种操作系统接口
keywords:
- python
- os
- 多种操作系统接口
tags:
- python
- 标准库
sidebar_position: 1
author: 7Wate
date: 2023-08-04
---
在进行 Python 编程时与操作系统进行交互是常见的需求。这包括但不限于管理文件系统、获取系统信息、处理路径等。Python 的 `os` 模块作为标准库的一部分,提供了丰富的方法来完成这些任务。下面是一些主要功能和使用示例。
## 模块导入
```python
import os
```
## 进程管理
| 方法 | 描述 | 平台适用性 |
| -------------------------- | -------------------------- | -------------------------------- |
| `os.fork()` | 创建一个子进程 | UNIX/Linux |
| `os.exec*()` | 在当前进程中执行新程序 | 所有(但在 Windows 上有限制) |
| `os.spawn*()` | 创建新进程运行程序 | 所有(但在 UNIX/Linux 上不常用) |
| `os.wait()` | 等待子进程完成 | UNIX/Linux |
| `os.waitpid(pid, options)` | 等待特定的子进程完成 | UNIX/Linux |
| `os.kill(pid, signal)` | 向进程发送信号 | UNIX/Linux |
| `os.terminate()` | 终止当前进程 | Windows |
| `os.startfile(filepath)` | 使用关联的应用程序打开文件 | Windows |
## 文件管理
| 方法 | 描述 | 平台适用性 |
| ------------------------------ | ------------------------------------- | ---------- |
| `os.open(file, flags[, mode])` | 打开文件,并返回文件描述符 | 所有 |
| `os.close(fd)` | 关闭文件描述符 | 所有 |
| `os.read(fd, n)` | 从文件描述符 `fd` 读取最多 `n` 个字节 | 所有 |
| `os.write(fd, str)` | 写入字符串到文件描述符 `fd` | 所有 |
| `os.remove(path)` | 删除指定的文件 | 所有 |
| `os.rename(src, dst)` | 重命名文件或目录 | 所有 |
| `os.stat(path)` | 获取文件或目录的状态信息 | 所有 |
| `os.chmod(path, mode)` | 改变文件或目录的权限 | 所有 |
| `os.chown(path, uid, gid)` | 改变文件或目录的所有者和所属组 | UNIX/Linux |
| `os.utime(path, times)` | 更新文件时间戳 | 所有 |
| `os.path.getsize(path)` | 获取文件的大小 | 所有 |
| `os.path.getmtime(path)` | 获取文件的最后修改时间 | 所有 |
| `os.path.getctime(path)` | 获取文件的创建时间 | 所有 |
| `os.path.isfile(path)` | 检查指定路径是否是文件 | 所有 |
| `os.path.isdir(path)` | 检查指定路径是否是目录 | 所有 |
| `os.path.exists(path)` | 检查指定路径是否存在 | 所有 |
| `os.path.split(path)` | 将路径分割为目录和文件名 | 所有 |
| `os.path.splitext(path)` | 将文件路径分割为文件名和扩展名 | 所有 |
| `os.path.join(a, b)` | 将多个路径组合成一个路径 | 所有 |
## 目录操作
| 方法 | 描述 | 平台适用性 |
| -------------------------- | -------------------------------------------- | ---------- |
| `os.getcwd()` | 获取当前工作目录 | 所有 |
| `os.chdir(path)` | 改变当前工作目录 | 所有 |
| `os.mkdir(path)` | 创建新目录 | 所有 |
| `os.makedirs(path)` | 创建新目录,如果父目录不存在也会被创建 | 所有 |
| `os.rmdir(path)` | 删除目录 | 所有 |
| `os.removedirs(path)` | 删除目录,如果目录内有文件也会被删除 | 所有 |
| `os.listdir(path)` | 列出指定目录下的所有文件和目录 | 所有 |
| `os.scandir(path)` | 返回一个迭代器,包含目录中的 `DirEntry` 对象 | 所有 |
| `os.rename(old, new)` | 重命名目录 | 所有 |
| `os.stat(path)` | 获取目录的状态信息 | 所有 |
| `os.chmod(path, mode)` | 改变目录的权限 | 所有 |
| `os.chown(path, uid, gid)` | 改变目录的所有者和所属组 | UNIX/Linux |
| `os.path.isdir(path)` | 检查指定路径是否是目录 | 所有 |
| `os.path.exists(path)` | 检查指定路径是否存在 | 所有 |
| `os.path.split(path)` | 将路径分割为目录和文件名 | 所有 |
| `os.path.join(a, b)` | 将多个路径组合成一个路径 | 所有 |
## 系统信息
| 方法 | 描述 | 平台适用性 |
| ----------------------- | ---------------------------------------- | ------------------- |
| `os.name` | 获取操作系统名字(如 `'posix'`, `'nt'` | 所有 |
| `os.uname()` | 获取详细的系统信息(仅 UNIX/Linux | UNIX/Linux |
| `os.environ` | 获取环境变量 | 所有 |
| `os.getenv(key)` | 获取特定环境变量的值 | 所有 |
| `os.putenv(key, value)` | 设置环境变量的值 | 所有 |
| `os.system(command)` | 运行外部命令 | 所有 |
| `os.cpu_count()` | 获取 CPU 核心数量 | 所有 |
| `os.getpid()` | 获取当前进程 ID | 所有 |
| `os.getppid()` | 获取父进程 ID | 所有 |
| `os.getuid()` | 获取当前用户 ID仅 UNIX/Linux | UNIX/Linux |
| `os.getgid()` | 获取当前组 ID仅 UNIX/Linux | UNIX/Linux |
| `os.getlogin()` | 获取当前用户登录名 | UNIX/Linux, Windows |
| `os.urandom(n)` | 生成 `n` 个字节的强随机数 | 所有 |
## 文件描述符操作
| 方法 | 描述 | 平台适用性 |
| ---------------------------------- | -------------------------------- | ---------- |
| `os.dup(fd)` | 复制文件描述符 | 所有 |
| `os.dup2(fd, fd2)` | 复制文件描述符到另一个文件描述符 | 所有 |
| `os.fdopen(fd[, mode[, bufsize]])` | 通过文件描述符打开文件对象 | 所有 |
## 信号处理
| 方法 | 描述 | 平台适用性 |
| ------------------------------- | ---------------- | ---------- |
| `os.kill(pid, sig)` | 向进程发送信号 | UNIX/Linux |
| `os.signal(signalnum, handler)` | 设置信号处理程序 | UNIX/Linux |
## 终端管理
| 方法 | 描述 | 平台适用性 |
| ---------------- | ------------------------------ | ---------- |
| `os.isatty(fd)` | 检查文件描述符是否连接到终端 | 所有 |
| `os.ttyname(fd)` | 获取与文件描述符关联的终端名称 | UNIX/Linux |
## 其他
| 方法 | 描述 | 平台适用性 |
| -------------------------------------- | ------------------------------------------------------------ | ---------- |
| `os.popen(command[, mode[, bufsize]])` | 打开与一个进程的管道 | 所有 |
| `os.pipe()` | 创建一个管道 | 所有 |
| `os.tempnam([dir[, prefix]])` | 生成一个唯一的临时文件名(不推荐,使用 `tempfile` 模块代替) | 所有 |
| `os.tmpfile()` | 创建并打开('w+b')一个新的临时文件(不推荐,使用 `tempfile` 模块代替) | UNIX/Linux |