python的OS模块基础总结

OS模块基础总结

OS模块基础大总结

Python 的 os 模块提供了与操作系统交互的多种功能,主要用于文件和目录的操作、获取系统信息以及进程管理。以下是对 os 模块常用功能的总结,以及实际代码示例。


1. OS模块基础操作

1.1 获取和设置当前工作目录
  • os.getcwd(): 获取当前工作目录。
  • os.chdir(path): 改变当前工作目录。

代码示例

import os

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

# 改变当前工作目录
new_dir = "/tmp"  # 示例路径
os.chdir(new_dir)
print("修改后的工作目录:", os.getcwd())

1.2 创建和删除目录
  • os.mkdir(path): 创建单级目录。
  • os.makedirs(path): 递归创建多级目录。
  • os.rmdir(path): 删除单级目录(仅当目录为空时)。
  • os.removedirs(path): 递归删除多级目录(仅当所有目录均为空时)。

代码示例

# 创建单级目录
os.mkdir("example_dir")

# 创建多级目录
os.makedirs("example_dir/sub_dir")

# 删除单级目录
os.rmdir("example_dir/sub_dir")

# 删除多级目录
os.removedirs("example_dir")

1.3 文件操作
  • os.remove(path): 删除文件。
  • os.rename(src, dst): 重命名文件或目录。
  • os.replace(src, dst): 替换文件(如果目标存在则覆盖)。

代码示例

# 创建一个测试文件
with open("test.txt", "w") as f:
    f.write("Hello, OS module!")

# 重命名文件
os.rename("test.txt", "renamed_test.txt")

# 删除文件
os.remove("renamed_test.txt")

1.4 获取文件/目录属性
  • os.stat(path): 返回文件或目录的属性(如大小、修改时间)。
  • os.path.exists(path): 检查文件或目录是否存在。
  • os.path.isfile(path): 检查路径是否为文件。
  • os.path.isdir(path): 检查路径是否为目录。

代码示例

file_path = "example.txt"

# 创建文件
with open(file_path, "w") as f:
    f.write("Check file attributes.")

# 检查文件属性
if os.path.exists(file_path):
    print("文件存在")
    print("是否是文件:", os.path.isfile(file_path))
    print("是否是目录:", os.path.isdir(file_path))
    print("文件大小:", os.stat(file_path).st_size, "bytes")

# 删除文件
os.remove(file_path)

1.5 获取目录内容
  • os.listdir(path): 列出指定目录的内容。
  • os.scandir(path): 返回目录条目的迭代器(包括更多属性)。

代码示例

os.mkdir("test_dir")
with open("test_dir/example.txt", "w") as f:
    f.write("Example file in directory.")

# 列出目录内容
print("目录内容:", os.listdir("test_dir"))

# 使用 os.scandir 获取详细信息
with os.scandir("test_dir") as entries:
    for entry in entries:
        print(f"名称: {entry.name}, 是否是文件: {entry.is_file()}")

os.remove("test_dir/example.txt")
os.rmdir("test_dir")

2. 环境变量操作

  • os.environ: 获取环境变量的字典。
  • os.getenv(key, default=None): 获取指定的环境变量。
  • os.putenv(key, value): 设置环境变量(已被 os.environ 取代)。

代码示例

# 获取所有环境变量
env_vars = os.environ
print("所有环境变量:", env_vars)

# 获取特定环境变量
path_var = os.getenv("PATH")
print("PATH 环境变量:", path_var)

# 设置环境变量
os.environ["MY_VAR"] = "HelloWorld"
print("自定义环境变量:", os.getenv("MY_VAR"))

3. 系统相关信息

  • os.name: 返回操作系统名称(如 posixnt)。
  • os.uname(): 返回详细的操作系统信息(仅 posix 系统可用)。
  • os.cpu_count(): 返回 CPU 核心数。

代码示例

print("操作系统名称:", os.name)
if hasattr(os, "uname"):  # 仅在 posix 系统上有效
    print("操作系统详细信息:", os.uname())
print("CPU 核心数:", os.cpu_count())

4. 路径操作

os.path 子模块提供了丰富的路径操作功能。

4.1 路径拼接和分割
  • os.path.join(path1, path2, ...): 拼接路径。
  • os.path.split(path): 分割路径为目录和文件名。
  • os.path.basename(path): 获取路径中的文件名。
  • os.path.dirname(path): 获取路径中的目录部分。

代码示例

path = os.path.join("home", "user", "example.txt")
print("拼接后的路径:", path)

# 分割路径
dir_name, file_name = os.path.split(path)
print("目录:", dir_name, ", 文件名:", file_name)

# 获取路径的目录部分
print("目录部分:", os.path.dirname(path))

# 获取路径的文件名部分
print("文件名部分:", os.path.basename(path))

4.2 绝对路径与规范化
  • os.path.abspath(path): 获取绝对路径。
  • os.path.normpath(path): 规范化路径。
  • os.path.realpath(path): 获取真实路径(处理符号链接)。

代码示例

relative_path = "./example.txt"

# 获取绝对路径
print("绝对路径:", os.path.abspath(relative_path))

# 规范化路径
messy_path = "/home//user/../example.txt"
print("规范化路径:", os.path.normpath(messy_path))

4.3 路径判断
  • os.path.exists(path): 检查路径是否存在。
  • os.path.isabs(path): 判断路径是否为绝对路径。
  • os.path.isfile(path), os.path.isdir(path): 判断路径是文件还是目录。

5. 进程管理

  • os.system(command): 执行系统命令(推荐使用 subprocess)。
  • os.getpid(): 获取当前进程 ID。
  • os.getppid(): 获取父进程 ID。

代码示例

print("当前进程 ID:", os.getpid())
print("父进程 ID:", os.getppid())

# 执行系统命令(如列出当前目录内容)
os.system("ls" if os.name == "posix" else "dir")

实战案例:清理空目录

以下代码会递归删除指定目录中的所有空目录:

def remove_empty_dirs(path):
    for root, dirs, files in os.walk(path, topdown=False):
        for dir in dirs:
            dir_path = os.path.join(root, dir)
            if not os.listdir(dir_path):  # 如果目录为空
                os.rmdir(dir_path)
                print(f"删除空目录: {dir_path}")

# 测试目录清理
os.makedirs("test_dir/sub_dir/empty_dir", exist_ok=True)
remove_empty_dirs("test_dir")
os.removedirs("test_dir")  # 清理父目录

总结

os 模块功能强大,涵盖了操作系统与 Python 程序之间的所有交互需求。通过掌握 os 模块,可以轻松实现文件管理、路径操作、环境变量操作等实用功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

忘忧记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值