我有一些适用于某些文件的代码,但不适用于其他文件。我很困惑!我采用了相同的文件,并用不同的名称复制了十次以模拟生产案例。
文件将位于两个不同的路径中。 path_one有效,但path_two无效。
import zipfile
path_one = "/tmp/my_files_one"
path_two = "/tmp/my_files_two"
for file in os.listdir(path_one):
print("xx", file)
# if zipfile.is_zipfile(file):
# print("in here")
with zipfile.ZipFile(file, 'r') as zipo:
zipo.extractall(path=path_one)
但是如果我使用path_two,则会出现此错误:
xx file_two.zip
Traceback (most recent call last):
File "./this_script.py", line 95, in <module>
with zipfile.ZipFile(file, 'r') as zipo:
File "/usr/lib64/python3.4/zipfile.py", line 923, in __init__
self.fp = io.open(file, modeDict[mode])
FileNotFoundError: [Errno 2] No such file or directory: 'file_two.zip'
文件肯定在路径中。我已经取消对is_zipfile部分的注释,因为它不是真的,即使其他文件也是如此。
为什么?
答案 0 :(得分:1)
问题似乎出在相对路径上,并且您从/ tmp / my_files_one运行命令,从而使它成为当前工作目录。
尝试使用os.path.join(dir,file)获取文件的绝对路径
import zipfile
path_one = "/tmp/my_files_one"
path_two = "/tmp/my_files_two"
for file in os.listdir(path_two):
file = os.path.join(path_two, file)
print("xx", file)
if zipfile.is_zipfile(file):
print("in here")
with zipfile.ZipFile(file, 'r') as zipo:
zipo.extractall(path=path_two)