2016-02-19 66 views
0

我想上传一个文件(可以是tar,tar.gz,bz2或zip之一),在上传之前,我想检查tar(或任何压缩格式)的内容是否只有文件夹在顶部的名字与变量'name'的名字相同。如何检查档案是否只有一个文件夹在python中?

在我的代码中,我能够上传文件,但我无法检查上述条件。请注意,代码中的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" 
+0

什么是utils.archives?它看起来不像一个标准的Python库。它在哪里记录? – Oin

+1

它在这里:https://github.com/django/django/blob/master/django/utils/archive.py – Sam

回答

0

该文档使我相信这是你的追索权,但我不认为“ZXC”文件是由在Django存档类的支持。

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 
+0

zxc是一个变量的名称,而不是文件名,它的工作原理。我在这个问题上问的是如何在python中解决问题中提到的伪代码。 – Sam

+0

has_leading_dir可能无法正常工作,如果顶部没有内容时没有内容 – Sam

相关问题