如何检查存档是不是在 python 中只有一个文件夹?
Posted
技术标签:
【中文标题】如何检查存档是不是在 python 中只有一个文件夹?【英文标题】:How do I check if the archive has only one folder in python?如何检查存档是否在 python 中只有一个文件夹? 【发布时间】:2016-02-19 23:04:11 【问题描述】:我正在尝试上传一个文件(可以是 tar、tar.gz、bz2 或 zip 之一),在上传之前,我想检查 tar(或任何压缩格式)的内容是否只有文件夹在顶部,名称与变量“name”的名称相同。
在我的代码中,我可以上传文件,但无法检查上述情况。请注意,代码中的 getnames() 不起作用。我们如何检查顶部是否只有一个具有给定名称的文件夹?
请注意,文件夹中可能没有文件。文件夹可能为空。
这是伪代码:
with Archive(fileobj=data['zxc']) as archive:
if archive.is_archive():
count=0
nam=""
for a in (get names of folders at the top):
nam=""
count+=1
if count!=1:
print "error"
elif nam!=name:
print "error2"
else:
print "correct"
【问题讨论】:
什么是utils.archives?它看起来不像一个标准的 python 库。它记录在哪里? 这里是:github.com/django/django/blob/master/django/utils/archive.py 【参考方案1】:文档让我相信这是您的追索权,但我认为 django 中的存档类不支持“zxc”文件。
def has_leading_dir(self, paths):
"""
Returns true if all the paths have the same leading path name
(i.e., everything is in one subdirectory in an archive)
"""
common_prefix = None
for path in paths:
prefix, rest = self.split_leading_dir(path)
if not prefix:
return False
elif common_prefix is None:
common_prefix = prefix
elif prefix != common_prefix:
return False
return True
【讨论】:
zxc 是变量名而不是文件名,它可以工作。我在问题中要问的是如何在python中实现问题中提到的伪代码。 has_leading_dir 如果顶部有一个没有内容的额外文件夹,可能无法正常工作以上是关于如何检查存档是不是在 python 中只有一个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 InputStream 7Z 存档文件是不是受密码保护?
如何检查 zip 文件是不是使用 python 的标准库 zipfile 加密?