python批量解压当前文件夹及子文件夹中的压缩文件,并保留原压缩文件的修改时间
时间: 2024-09-08 16:02:19 浏览: 129
在Python中,你可以使用内置的`zipfile`模块来解压缩文件。为了批量解压当前文件夹及子文件夹中的压缩文件并保留原压缩文件的修改时间,你可以按照以下步骤进行:
1. 使用`os`模块遍历当前目录及其子目录,找到所有的压缩文件。
2. 对于每个找到的压缩文件,使用`zipfile`模块打开并解压。
3. 使用`shutil`模块复制文件时保留时间戳。
下面是一个简单的代码示例:
```python
import os
import shutil
import zipfile
import datetime
def extract_zip(zip_path, extract_to):
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(extract_to)
# 获取原始文件的修改时间
ts = os.path.getmtime(zip_path)
mod_time = datetime.datetime.fromtimestamp(ts)
# 设置解压文件夹内文件的时间戳为压缩文件的时间戳
for root, dirs, files in os.walk(extract_to):
for file in files:
os.utime(os.path.join(root, file), (ts, ts))
def batch_extract_zip(directory):
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(('.zip', '.rar', '.gz', '.tar', '.tar.gz', '.tar.bz2', '.7z')):
zip_path = os.path.join(root, file)
extract_to = os.path.join(directory, "extracted", file.rsplit('.', 1)[0])
os.makedirs(extract_to, exist_ok=True)
extract_zip(zip_path, extract_to)
print(f"Extracted {zip_path} to {extract_to}")
# 设置当前目录为你需要批量解压的顶级目录
current_directory = os.getcwd()
batch_extract_zip(current_directory)
```
这段代码首先定义了一个`extract_zip`函数,用于解压缩单个文件并尝试保留原始压缩文件的修改时间。然后定义了一个`batch_extract_zip`函数,它会遍历给定目录下的所有文件,对于压缩文件使用`extract_zip`函数进行解压。
请确保你的环境中已经安装了处理不同压缩格式所需的库,例如`rarfile`或`py7zr`,因为`zipfile`模块仅支持ZIP格式。
阅读全文
相关推荐















