gpt4 book ai didi

Python解压文件并检查文件是否存在

转载 作者:行者123 更新时间:2023-11-28 21:56:13 26 4
gpt4 key购买 nike

我正在开始一个涉及每天早上解压缩数据的工作流程。 zip 看起来像这样:

zip_download.zip
Set 1
2014
Feb
17th
Image_1.png
Image_2.png
Set 2
2014
Feb
14th
Image_1.png
Image_2.png

Example file path: zip_download.zip/set 1/2014/Feb/14th/Image_1.png

我需要的是让 Python 每天解压这些文件,并基本上在 Windows 文件夹中构建一个数据库。有时可能有前几天的数据,并且该文件夹可能已经存在,所以我需要错误处理。

这是我目前所拥有的:

import zipfile
import os

target_location = r'C:/new_filestructure'
file_download = r'C:/Users.Mike/Downloads/download1.zip'

with zipfile.ZipFile(target_zip) as zip_file:
for member in zip_file.namelist():
try:
os.makedirs(os.path.join(target_location + r'/' + os.path.dirname(member)))
except:
(OSSError, WindowsError)
print os.path.basename(member)
print os.path.dirname(member)

这将运行良好并打印我想要的内容(只是测试它是否正在遍历所有文件)但它不会创建单个文件夹。如果我取出 try/except ,我会得到一个错误,说目录已经存在,而它显然不存在。

有什么想法吗?

最佳答案

代码中的主要问题是当多个文件位于同一目录中时会导致错误。例如,目录“Set 1/2014/Feb/17th”创建了两次:一次用于 Image_1.png,另一次用于 Image_2.png。

你也有一个奇怪的地方

file_download

应该是

target_zip

我最终得到的代码是:

import zipfile
import os

target_location = r'new_filestructure'
target_zip = r'zip.zip'

with zipfile.ZipFile(target_zip) as zip_file:
for member in zip_file.namelist():
if os.path.exists(target_location + r'/' + member) or os.path.isfile(target_location + r'/' + member):
print 'Error: ', member, ' exists.'
else:
zip_file.extract(member, target_location)

关于Python解压文件并检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21843392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com