Python教学-最常用的标准库之一——OS库

os 库是 Python 标准库中的一个模块,它提供了一种方便的方式来使用操作系统相关的功能。os 模块提供了很多函数,可以用来处理文件和目录、访问环境变量、执行系统命令等。以下是一些常用的 os 模块的功能和示例:

1. 文件和目录操作

1.1 当前工作目录
  • os.getcwd():获取当前工作目录。
  • os.chdir(path):改变当前工作目录。
python 复制代码
import os

current_dir = os.getcwd()
print("当前工作目录:", current_dir)

os.chdir('/path/to/new/directory')
new_dir = os.getcwd()
print("改变后的工作目录:", new_dir)
1.2 创建和删除目录
  • os.mkdir(path):创建单个目录。
  • os.makedirs(path, exist_ok=False):递归创建目录。如果 exist_ok=True,目录已存在时不报错。
  • os.rmdir(path):删除单个空目录。
  • os.removedirs(path):递归删除目录。
python 复制代码
os.makedirs('dir1/dir2', exist_ok=True)
os.rmdir('dir1/dir2')  # 只能删除空目录
os.removedirs('dir1/dir2')  # 递归删除
1.3 列出目录内容
  • os.listdir(path):列出指定目录下的所有文件和目录。
python 复制代码
files_and_dirs = os.listdir('.')
print("当前目录下的文件和目录:", files_and_dirs)
1.4 文件路径操作
  • os.path.join(path, *paths):智能拼接路径。
  • os.path.abspath(path):获取绝对路径。
  • os.path.dirname(path):获取目录名。
  • os.path.basename(path):获取文件名。
  • os.path.exists(path):检查路径是否存在。
  • os.path.isfile(path):检查路径是否为文件。
  • os.path.isdir(path):检查路径是否为目录。
  • os.path.getsize(path):获取文件大小(字节)。
python 复制代码
full_path = os.path.join('dir1', 'file.txt')
abs_path = os.path.abspath(full_path)
dir_name = os.path.dirname(abs_path)
file_name = os.path.basename(abs_path)
print("完整路径:", full_path)
print("绝对路径:", abs_path)
print("目录名:", dir_name)
print("文件名:", file_name)
print("路径是否存在:", os.path.exists(abs_path))
print("是否为文件:", os.path.isfile(abs_path))
print("是否为目录:", os.path.isdir(dir_name))
if os.path.isfile(abs_path):
    print("文件大小:", os.path.getsize(abs_path), "字节")

2. 环境变量

  • os.getenv(key, default=None):获取环境变量的值,如果不存在则返回 default
  • os.environ:获取一个包含所有环境变量的字典。
  • os.putenv(key, value):设置环境变量(仅在某些平台上有效,建议使用 os.environ)。
  • os.unsetenv(key):删除环境变量(仅在某些平台上有效)。
python 复制代码
# 获取环境变量
home_dir = os.getenv('HOME')
print("HOME 环境变量:", home_dir)

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

# 删除环境变量(仅在支持 unsetenv 的平台上有效)
# os.unsetenv('MY_VAR')

3. 执行系统命令

  • os.system(command):在子终端执行系统命令。
  • os.popen(cmd, mode='r', buffering=-1):打开一个管道连接到或从一个命令。
  • subprocess 模块:更强大和灵活的子进程管理模块,建议使用 subprocess 代替 os.systemos.popen
python 复制代码
# 使用 os.system 执行命令
exit_code = os.system('ls -l')
print("命令执行后的退出码:", exit_code)

# 使用 os.popen 执行命令并读取输出
process = os.popen('ls -l')
output = process.read()
print("命令输出:\n", output)
process.close()

4. 文件和目录权限

  • os.chmod(path, mode):改变文件或目录的权限。
  • os.chown(path, uid, gid):改变文件或目录的所有者和组(仅在 Unix 上有效)。
python 复制代码
# 假设你有一个文件 'file.txt'
# os.chmod('file.txt', 0o755)  # 设置文件权限为 rwxr-xr-x

5. 临时文件和目录

  • tempfile.TemporaryFile():创建一个临时文件,文件关闭后会自动删除。
  • tempfile.NamedTemporaryFile():创建一个命名临时文件,文件关闭后会自动删除。
  • tempfile.mkdtemp():创建一个临时目录,可以手动删除。
  • tempfile.TemporaryDirectory():创建一个临时目录,目录关闭后会自动删除。
python 复制代码
import tempfile

# 创建一个临时文件
with tempfile.TemporaryFile() as temp_file:
    temp_file.write(b'Hello, World!')
    temp_file.seek(0)
    print(temp_file.read())

# 创建一个命名临时文件
with tempfile.NamedTemporaryFile(delete=False) as named_temp_file:
    temp_file_name = named_temp_file.name
    print("命名临时文件:", temp_file_name)
    # 可以手动删除文件
    # os.remove(temp_file_name)

# 创建一个临时目录
temp_dir = tempfile.mkdtemp()
print("临时目录:", temp_dir)
# 可以手动删除目录
# os.rmdir(temp_dir) 或 os.removedirs(temp_dir) 如果是递归创建的

# 创建一个自动删除的临时目录
with tempfile.TemporaryDirectory() as temp_dir_ctx:
    print("自动删除的临时目录:", temp_dir_ctx)

这些只是 os 模块中的一些基本功能,实际上 os 模块的功能非常丰富,适用于各种操作系统相关的任务。如果需要更复杂的子进程管理,建议查阅 subprocess 模块。

相关推荐
十分钟空间5 分钟前
有哪些常用的Python后端开发框架?
python·flask·fastapi
DK221518 分钟前
C++ STL 容器简介(蓝桥杯适用精简版)
开发语言·c++·蓝桥杯
惜棠17 分钟前
在任意路径下简单开启jupyter notebook
ide·python·jupyter
z_mazin21 分钟前
JavaScript 渲染内容爬取:Puppeteer 高级技巧与实践
开发语言·javascript·ecmascript
明明跟你说过22 分钟前
从零开始用 PyTorch 搭建 CNN 手写数字识别模型(MNIST 实战教程)
人工智能·pytorch·python·ai·语言模型·cnn
Zym318838116429 分钟前
RHCE第三次作业 搭建dns的正向解析服务器
运维·服务器
敲上瘾30 分钟前
基于UDP协议的群聊服务器开发(C/C++)
linux·服务器·c++·网络协议·udp·信息与通信
麻芝汤圆34 分钟前
Spark 集群搭建:Standalone 模式详解
大数据·开发语言·hadoop·分布式·spark·mapreduce
这里有鱼汤42 分钟前
Python也学会造假了?推荐一个神奇的库Faker
后端·python
NorthFish北海有鱼1 小时前
python三维矩阵的维度
python·矩阵·numpy