python批量解压当前文件夹及子文件夹中的压缩文件gz,并保留原压缩文件的修改时间
时间: 2024-09-08 18:02:21 浏览: 58
在Python中,可以使用`gzip`模块来解压`.gz`压缩文件,以及`os`和`shutil`模块来保留文件的修改时间。以下是一个简单的示例代码,用于批量解压当前文件夹及子文件夹中的`.gz`文件,并保留原压缩文件的修改时间:
```python
import os
import shutil
import gzip
def extract_gz(src_path, dest_path):
with gzip.open(src_path, 'rb') as f_in:
with open(dest_path, 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
def preserve_timestamp(src, dest):
if os.path.exists(src):
os.utime(dest, (os.stat(src).st_atime, os.stat(src).st_mtime))
def extract_all_gz(directory):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.gz'):
src_path = os.path.join(root, file)
dest_path = os.path.splitext(src_path)[0]
extract_gz(src_path, dest_path)
preserve_timestamp(src_path, dest_path)
# 替换为你的目录路径
directory = 'your_directory_path'
extract_all_gz(directory)
```
这段代码首先定义了三个函数:
1. `extract_gz(src_path, dest_path)`: 解压单个`.gz`文件到指定的路径。
2. `preserve_timestamp(src, dest)`: 保留原文件的访问时间和修改时间。
3. `extract_all_gz(directory)`: 遍历指定目录及其子目录,找到所有`.gz`文件,调用前两个函数进行解压和时间保留。
请确保将`directory`变量设置为你想要批量解压`.gz`文件的目录路径。
阅读全文