如何检查存档是不是在 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 加密?

如何检查 PHP 中是不是加密的 Zip 存档?

将应用程序上传到应用商店时,如何检查哪些文件是存档的一部分?

如何检查zip存档中是否存在该文件?

如何检查 Xcode 是不是下载了所有配置文件?