python解压zip命令代码解压文件,并保持原文件名名不变
时间: 2024-09-11 16:06:41 浏览: 26
要实现Python解压`.gz`和`.zip`文件并保持原文件名不变,可以使用`gzip`模块解压`.gz`文件,`zipfile`模块解压`.zip`文件。这里有一个示例代码,展示了如何解压这些类型的文件:
```python
import os
import gzip
import zipfile
from datetime import datetime
# 解压目录遍历函数
def unzip_files(directory):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.gz'): # 处理.gz文件
with gzip.open(os.path.join(root, file), 'rb') as f_in:
extracted_path = os.path.splitext(file)[0]
with open(os.path.join(root, extracted_path), 'wb') as f_out:
f_out.write(f_in.read())
os.remove(os.path.join(root, file)) # 删除原始.gz文件
elif file.endswith('.zip'): # 处理.zip文件
with zipfile.ZipFile(os.path.join(root, file), 'r') as zip_ref:
zip_ref.extractall(root)
os.remove(os.path.join(root, file)) # 删除原始.zip文件
# 使用上述函数开始解压
unzip_directory = './' # 指定解压的根目录
unzip_files(unzip_directory)
# 为了保持文件的时间戳,可以在写入新文件时设置其创建时间
for root, dirs, files in os.walk(unzip_directory):
for file in files:
original_file = os.path.join(root, file)
extracted_file = os.path.join(root, file)
# 如果文件不是新的(假设已存在),则更新其时间戳
if os.path.exists(extracted_file):
mtime = datetime.fromtimestamp(os.path.getmtime(original_file))
os.utime(extracted_file, (mtime.timestamp(), mtime.timestamp()))
阅读全文