在Python中无法识别目录
我正在上传一个压缩文件夹,其中包含一个文本文件文件夹,但它没有检测到压缩的文件夹是一个目录。我认为这可能与在在Python中无法识别目录,python,django,zip,Python,Django,Zip,我正在上传一个压缩文件夹,其中包含一个文本文件文件夹,但它没有检测到压缩的文件夹是一个目录。我认为这可能与在os.path.isdir调用中需要一个绝对路径有关,但似乎不知道如何实现它 zipped = zipfile.ZipFile(request.FILES['content']) for libitem in zipped.namelist(): if libitem.startswith('__MACOSX/
os.path.isdir
调用中需要一个绝对路径有关,但似乎不知道如何实现它
zipped = zipfile.ZipFile(request.FILES['content'])
for libitem in zipped.namelist():
if libitem.startswith('__MACOSX/'):
continue
# If it's a directory, open it
if os.path.isdir(libitem):
print "You have hit a directory in the zip folder -- we must open it before continuing"
for item in os.listdir(libitem):
通常是为了在运行脚本时处理相对路径等,您需要使用
os.path
在我看来,您正在从Zipfile读取您实际上没有解压缩的项目,那么为什么您希望文件/dirs存在呢
通常我会print os.getcwd()
来找出我的位置,并使用os.path.join
来连接数据目录的根目录,无论它是否与包含脚本的目录相同,我都不知道。使用类似于scriptdir=os.path.dirname(os.path.abspath(_文件__))
我想你应该做些类似的事情
libitempath = os.path.join(scriptdir, libitem)
if os.path.isdir(libitempath):
....
但是我猜你在做什么,因为我不太清楚。你上传的文件是一个单独的zip文件,它只是其他文件和目录的容器。所有Python
os.path
函数都对本地文件系统上的文件进行操作,这意味着您必须先提取zip文件的内容,然后才能使用os.path
或os.listdir
不幸的是,无法从ZipFile
对象确定条目是用于文件还是目录
重写或先进行提取的代码可能如下所示:
import tempfile
# Create a temporary directory into which we can extract zip contents.
tmpdir = tempfile.mkdtemp()
try:
zipped = zipfile.ZipFile(request.FILES['content'])
zipped.extractall(tmpdir)
# Walk through the extracted directory structure doing what you
# want with each file.
for (dirpath, dirnames, filenames) in os.walk(tmpdir):
# Look into subdirectories?
for dirname in dirnames:
full_dir_path = os.path.join(dirpath, dirname)
# Do stuff in this directory
for filename in filenames:
full_file_path = os.path.join(dirpath, filename)
# Do stuff with this file.
finally:
# ... Clean up temporary diretory recursively here.