python的OS模块和shutil模块使用

ops/2025/1/1 16:34:01/

一. OS模块

  os 模块提供了一个与操作系统交互的接口,可以用来处理文件和目录的路径、创建和删除目录、执行系统命令、获取和修改环境变量等操作。

1.文件和目录操作

1.1 获取当前工作目录
python">import oscurrent_dir = os.getcwd()
print(current_dir)  # 输出当前工作目录

os.getcwd() 用于获取当前工作目录。

1.2 改变工作目录
python">import osos.chdir(r'C:\Users\31052\Desktop') # 切换到指定目录
current_dir = os.getcwd()
print(current_dir) # 验证当前工作目录已改变

os.chdir(path) 用于改变当前的工作目录。

1.3 创建目录和删除目录
  • 创建目录
python">import osos.mkdir('new_dir')  # 创建一个新目录
  • 递归创建多级目录
python">os.makedirs('parent/child', exist_ok=True)  # 创建父子目录,exist_ok=True 如果目录已存在不会抛出异常
  • 删除空目录
python">os.rmdir('empty_dir')  # 删除空目录
  • 删除多级空目录
python">os.removedirs('parent/child')  # 如果是空目录,会递归删除父目录
1.4 列出目录内容
python">import osfiles = os.listdir('/path/to/directory')
print(files)  # 返回目录下所有文件和子目录的名称列表

os.listdir(path) 返回指定目录中的所有文件和子目录。

1.5 判断文件路径是否存在
python">import osprint(os.path.exists('some_path'))  # 检查路径是否存在
1.6 获取文件和目录的详细信息
  • 获取文件的大小
python">import os
size = os.path.getsize('file.txt')
print(f"文件大小: {size} 字节")
  • 获取文件的最后修改时间
python">import os
last_modified_time = os.path.getmtime('file.txt')
print(f"文件最后修改时间: {last_modified_time}")

2. 文件路径操作

2.1 拼接文件路径
python">import os
path = os.path.join('folder', 'subfolder', 'file.txt')
print(path)  # 输出:folder/subfolder/file.txt

os.path.join() 用于将多个路径组合成一个完整路径。

2.2 判断路径类型
  • 是否为文件
python]">import os
print(os.path.isfile('file.txt'))  # 判断路径是否为文件
  • 是否为目录
python">import os
print(os.path.isdir('folder'))  # 判断路径是否为目录
2.3 获取绝对路径
python">import os
absolute_path = os.path.abspath('file.txt')
print(absolute_path)  # 输出文件的绝对路径

os.path.abspath() 用于获取指定路径的绝对路径。

3. 其他常用功能

3.1 执行系统命令
python">import os
os.system('echo Hello, World!')  # 输出 Hello, World!

os.system(command) 用于执行 shell 命令,但返回值较为简单,不适合捕获输出。

3.2 环境变量操作
python">import os
print(os.environ)  # 输出当前所有环境变量# 获取环境变量的值
print(os.getenv('HOME'))# 设置环境变量
os.environ['MY_VAR'] = 'some_value'

os.environ 用来访问和修改环境变量。

二. shutil模块

shutil 模块提供了更高级的文件和目录操作,主要用于文件的复制、删除、移动、归档等任务。它非常适合用于处理大型文件或需要进行目录树操作的任务。

1. 文件和目录操作

1.1 复制文件
python">import shutil
shutil.copy('source.txt', 'destination.txt')  # 复制文件到目标位置

shutil.copy(src, dst) 复制文件,将 src 文件复制到 dst 路径。

1.2 复制文件并保留元数据
python">import shutil
shutil.copy2('source.txt', 'destination.txt')  # 复制文件并保留元数据(如修改时间)

shutil.copy2(src, dst) 除了复制文件内容外,还会保留文件的元数据。

1.3 复制整个目录
python">import shutil
shutil.copytree('source_dir', 'destination_dir')  # 复制整个目录

shutil.copytree(src, dst) 复制整个目录及其内容到目标位置。

1.4 移动文件或目录
python">import shutil
shutil.move('source.txt', 'destination.txt')  # 移动文件或目录

shutil.move(src, dst) 用于将文件或目录从 src 移动到 dst。

1.5 删除目录及其内容
python">import shutil
shutil.rmtree('directory_to_delete')  # 删除目录及其所有内容shutil.rmtree(path) 

递归删除指定路径下的目录及其内容。

2. 压缩和解压缩

2.1 创建压缩文件
python">import shutil
shutil.make_archive('archive_name', 'zip', '/path/to/directory')  # 创建 zip 格式的压缩文件

shutil.make_archive(base_name, format, root_dir) 用于创建归档文件。format 可以是 ‘zip’、‘tar’、‘gztar’ 等。

2.2 解压缩文件
python">import shutil
shutil.unpack_archive('archive_name.zip', '/path/to/extract')  # 解压到指定目录

shutil.unpack_archive(filename, extract_dir) 解压指定的归档文件到目标目录。

3. 示例:读取文件内容并移动

假设你需要从一个目录读取所有 .txt 文件的内容,然后将它们移动到另一个目录并重命名:

python">import os
import shutilsource_directory = '/path/to/source_directory'
destination_directory = '/path/to/destination_directory'# 确保目标目录存在
if not os.path.exists(destination_directory):os.makedirs(destination_directory)# 遍历源目录中的所有文件
for filename in os.listdir(source_directory):if filename.endswith('.txt'):source_file = os.path.join(source_directory, filename)# 读取文件内容with open(source_file, 'r') as file:content = file.read()# 将文件内容保存到目标目录new_filename = f"moved_{filename}"destination_file = os.path.join(destination_directory, new_filename)with open(destination_file, 'w') as new_file:new_file.write(content)# 移动源文件到目标目录shutil.move(source_file, os.path.join(destination_directory, filename))print(f"文件 {filename} 已移动并重命名为 {new_filename}")

总结

  • os 模块 主要用于操作系统级别的任务,如文件和目录操作、环境变量、路径操作等。
  • shutil 模块 提供了更高级的文件和目录操作,尤其是用于复制、移动、删除、归档、解压等任务。

http://www.ppmy.cn/ops/146073.html

相关文章

Mooncake:kimi后端推理服务的架构设计

前言 本文依托论文《Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving》来讲解kimi的后端服务架构Mooncake,并按照自己的思路来梳理论文中的一些关键信息。 背景 服务端面临的问题 随着大模型技术越来越强,很多应用都是以Maas(Model as a Service…

Windows系统提示synsoacc.dll文件报错要怎么解决?

一、文件丢失问题:深度剖析与应对策略 文件丢失是电脑运行时常见的问题之一。它可能由多种原因引起,如硬盘故障、病毒攻击、不当的文件操作等。当Windows系统提示synsoacc.dll丢失时,通常意味着该文件对于当前正在运行的程序或系统服务至关重…

最新高性能多目标优化算法:融合高斯扰动与竞争学习的多目标加权平均算法(MOWAA)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码

一、加权平均算法 加权平均算法(Weighted Average Algorithm, WAA)是2024年提出的一种新型元启发式优化算法,其灵感来源于加权平均位置概念。WAA算法通过优化种群的加权平均位置来平衡全局搜索(Exploration)与局部开发…

Linux-Ubuntu之串口通信

Linux-Ubuntu之串口通信 一,串口通信1.串口通信寄存器配置2.串口通信软件实现①手动波特率②自动波特率③主函数 二,printf和scanf实现串口的输入显示 一,串口通信 1.串口通信寄存器配置 串口通信利用接口是这个TTL,下载程序用的…

深度学习笔记1:神经网络与模型训练过程

参考博客:PyTorch深度学习实战(1)——神经网络与模型训练过程详解_pytorch 实战-CSDN博客 人工神经网络 ANN:张量及数学运算的集合,排列方式近似于松散的人脑神经元排列 组成 1)输入层 2)隐…

golang,多个proxy拉包的处理逻辑

在Go语言中,当你设置了多个代理(GOPROXY)时,Go工具链会按照你设置的顺序尝试每个代理。如果第一个代理失败,它会尝试下一个代理,直到成功获取到模块或者所有代理都尝试失败。最后,如果所有代理都…

【RabbitMQ高级篇】消息可靠性问题(1)

目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…

Kafka消息不丢失与重复消费问题解决方案总结

1. 生产者层面 异步发送与回调处理 异步发送方式:生产者一般使用异步方式发送消息,异步发送有消息和回调接口两个参数。在回调接口的重写方法中,可通过异常参数判断消息发送状态。若消息发送成功,异常参数为null;若发…