2016-02-19 87 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

相關問題