【发布时间】:2017-11-29 20:47:30
【问题描述】:
我只知道如何为 GIS 目的编写 python。使用 arcpy 和地理处理工具的代码还有更多内容......这只是我坚持的开始部分,它是为了尝试准备好数据,这样我就可以将压缩文件夹中的 shapefile 用于我的其余部分脚本
我正在尝试提示用户输入要搜索的目录。为了使用这个脚本,它将搜索一个压缩的 zip 文件,然后将所有文件解压缩到同一个目录。
import zipfile, os
# ask what directory to search in
mypath = input("Enter .zip folder path: ")
extension = ".zip"
os.chdir(mypath) # change directory from working dir to dir with files
for item in os.listdir(mypath):
if item.endswith(extension):
filename = os.path.abspath(item)
zip_ref = zipfile.ZipFile(filename)
zip_ref.extractall(mypath)
zip_ref.close()
尝试了你们的建议,但仍然存在以下问题:
import zipfile, os
mypath = input("Enter folder: ")
if os.path.isdir(mypath):
for dirpath, dirname, filenames in os.listdir(mypath):
for file in filenames:
if file.endswith(".zip"):
print(os.path.abspath(file))
with zipfile.ZipFile(os.path.abspath(file)) as z:
z.extractall(mypath)
else:
print("Directory does not exist.")
【问题讨论】:
-
“停止工作”是什么意思?有错误吗?
print(file_name)是否显示文件的正确路径?看起来您的代码在else:之后没有正确缩进。 -
我的程序中的缩进是正确的,当我在这里发帖时它被移到了左边。我不擅长解释事情,对不起。它将完全运行,我得到“进程以退出代码 0 完成”(我正在使用 PyCharm)......但它实际上并没有解压缩我为目录输入的文件夹。我不知道为什么,我只是测试了一些打印语句,这就是我发现它在“if item.endswith(".zip")”行之后的某个地方
-
我不确定您是如何循环访问代码中的文件的。使用 os.listdir 或 os.walk 获取文件夹内的文件。
-
我不明白如何使用 os.这一切都让我更加困惑
-
@hawkia os 是一个 python 模块,它提供了一种使用操作系统相关功能的可移植方式。 os.listdir 返回一个列表,其中包含路径给定的目录中条目的名称检查一些答案以了解它是如何工作的
标签: python zip gis unzip arcpy