Python 深入理解 os 和 sys 模块
- OS 介绍
- 代码
- 智能连接(拼接)路径
- 创建目录
- 展示(列出目录)
- 删除文件
- 重命名文件或目录
- sys 介绍
- 代码
- 命令行参数处理 (`sys.argv`)
- 标准输入输出重定向 (`sys.stdin`, `sys.stdout`, `sys.stderr`):
- 解释器相关 (`sys.version`, `sys.exit(code)`):
- 综合
- 代码
OS 介绍
os 模块为 Python 提供了与操作系统交互的接口。这个模块可以用来执行各种与操作系统有关的操作,比如文件和目录的操作、进程管理以及环境变量管理等。
方法 | 描述 |
---|---|
os.path.join(path1, path2, …) | 用于智能地连接一个或多个路径部分,类似于 path.join() 。 |
os.makedirs(name, mode=0o777, exist_ok=False) | 创建目录,如果目录已存在则抛出异常(如果设置 exist_ok=True 则不抛出异常)。 |
os.listdir(path) | 列出指定路径下的所有文件和目录。 |
os.remove(name) | 删除文件。 |
os.rename(old, new) | 重命名文件或目录。 |
代码
智能连接(拼接)路径
os.path.join(path1, path2, ...)
: 用于智能地连接一个或多个路径部分,类似于 path.join()
。
import ospath1 = '/path/to/dir'
path2 = 'file.txt'full_path = os.path.join(path1, path2)
print(full_path)
创建目录
os.makedirs(name, mode=0o777, exist_ok=False)
: 创建目录,如果目录已存在则抛出异常(如果设置 exist_ok=True
则不抛出异常)。
import osdirectory = '/path/to/new/directory'try:os.makedirs(directory)print(f"Directory '{directory}' created successfully.")
except FileExistsError:print(f"Directory '{directory}' already exists.")
展示(列出目录)
os.listdir(path)
: 列出指定路径下的所有文件和目录。
import ospath = '/path/to/directory'files_and_directories = os.listdir(path)
print("Files and directories in", path, "are:", files_and_directories)
删除文件
os.remove(name)
: 删除文件。
import osfile_to_delete = '/path/to/file.txt'if os.path.exists(file_to_delete):os.remove(file_to_delete)print("File", file_to_delete, "deleted successfully.")
else:print("File", file_to_delete, "does not exist.")
重命名文件或目录
os.rename(old, new)
: 重命名文件或目录。
import osold_name = '/path/to/old_name.txt'
new_name = '/path/to/new_name.txt'if os.path.exists(old_name):os.rename(old_name, new_name)print("File", old_name, "renamed to", new_name)
else:print("File", old_name, "does not exist.")
sys 介绍
sys 模块提供了许多与 Python 解释器和系统相关的变量和函数。
功能 | 描述 |
---|---|
命令行参数处理 | |
sys.argv | 包含从命令行传递给 Python 脚本的参数列表。 |
标准输入输出重定向 | |
sys.stdin | 代表标准输入。 |
sys.stdout | 代表标准输出。 |
sys.stderr | 代表标准错误。 |
解释器相关 | |
sys.version | 返回 Python 解释器版本字符串。 |
sys.exit(code) | 退出程序,并可选地返回一个退出代码。 |
代码
命令行参数处理 (sys.argv
)
import sys# 打印命令行参数列表
print("命令行参数:", sys.argv)# 打印每个命令行参数
for i, arg in enumerate(sys.argv):print(f"参数 {i}: {arg}")
标准输入输出重定向 (sys.stdin
, sys.stdout
, sys.stderr
):
import sys# 从标准输入读取用户输入
user_input = input("请输入一些内容: ")
print("你输入的内容是:", user_input)# 将输出重定向到文件
with open('output.txt', 'w') as f:sys.stdout = fprint("这条消息会写入到文件 output.txt 中")
解释器相关 (sys.version
, sys.exit(code)
):
import sys# 打印 Python 解释器版本字符串
print("Python 解释器版本:", sys.version)# 退出程序,并返回退出代码
sys.exit(0) # 退出代码为 0 表示正常退出
综合
Python中使用os
和sys
模块实现一个跨平台的文件复制功能,并能够接收命令行参数
代码
import os
import sys
def copy_file(src, dst):try:with open(src, 'rb') as f:content = f.read()with open(dst, 'wb') as f:f.write(content)print(f"文件 {src} 复制到 {dst} 成功。")except IOError as e:print(f"无法复制文件 {src} 到 {dst}。{e}")
def main(args):if len(args) != 3:print("使用说明:python copy_file.py <源文件> <目标文件>")sys.exit(1)source = args[1]destination = args[2]copy_file(source, destination)
if __name__ == "__main__":main(sys.argv)
在命令中运行
python copy_file.py 源文件.txt 目标文件.txt