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 os
path1 = '/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 os
directory = '/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 os
path = '/path/to/directory'
files_and_directories = os.listdir(path)
print("Files and directories in", path, "are:", files_and_directories)
删除文件
os.remove(name)
: 删除文件。
import os
file_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 os
old_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 = f
print("这条消息会写入到文件 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