1问题描述
使用os.listdir(file_path)方法,遍历目标文件夹中的文件,并进行压缩操作时,系统报错说找不到文件。使用大神的方法在文件路径后面加"/",但是依然不能成功运行。
def zip(self):
file_path=os.path.join(self.outdir,self.shpname)
zip_path=os.path.join(self.outdir,f'{self.shpname}.zip')
if not os.path.exists(zip_path):
with zipfile.ZipFile(zip_path,'w') as zipobj:
#遍历目标的所有文件,并写入压缩路径
for file in os.listdir(file_path):
# print(file)
zipobj.write(file)
zipobj.printdir()
print('以上文件压缩成功')
else:
print('压缩包已存在')
2尝试解决
使用print()方法是可以输出目标文件夹中的文件,但是进行下一步的压缩操作就会报错。
3解决方法
先使用os.chdir(file_path)进入文件,后面使用os.listdir()的时候就不用添加文件位置,最后成功运行。
def zip(self):
'遍历shp文件夹中的文件,并压缩shp文件夹'
file_path=os.path.join(self.outdir,self.shpname)
zip_path=os.path.join(self.outdir,f'{self.shpname}.zip')
# 必须先进入file_path,再使用os.listdir()
# 直接使用os.listdir(file_path),可正常print
# 但在写入文件时候会报错
os.chdir(file_path)
if not os.path.exists(zip_path):
with zipfile.ZipFile(zip_path,'w') as zipobj:
#遍历目标的所有文件,并写入压缩路径
for file in os.listdir():
# print(file)
zipobj.write(file)
zipobj.printdir()
print('以上文件压缩成功')
else:
print('压缩包已存在')