zipアーカイブのフォルダのみを一覧表示するにはどうすればよいですか? これは、アーカイブからすべてのfolfderとファイルの一覧が表示されます:Pythonでzipアーカイブ内のフォルダだけを一覧表示する方法はありますか?
import zipfile
file = zipfile.ZipFile("samples/sample.zip", "r")
for name in file.namelist():
print name
感謝を。
zipアーカイブのフォルダのみを一覧表示するにはどうすればよいですか? これは、アーカイブからすべてのfolfderとファイルの一覧が表示されます:Pythonでzipアーカイブ内のフォルダだけを一覧表示する方法はありますか?
import zipfile
file = zipfile.ZipFile("samples/sample.zip", "r")
for name in file.namelist():
print name
感謝を。
一つの方法は何をするかもしれません:
線に沿って>>> [x for x in file.namelist() if x.endswith('/')]
<<< ['folder/', 'folder2/']
より
set([os.path.split(x)[0] for x in zf.namelist() if '/' in x])
Pythonのzipファイルには、私は、以前の答えを考えていない
フォルダだけを格納していないため、いくつかのコメントに記載されているように、pathsepが/
であると仮定しているため、クロスプラットフォーム対応です。また、サブディレクトリは無視されます(Pythonpadavanに問題がないかもしれません...質問から完全にはっきりしませんでした)。何について:
topdirs = [os.path.split(x)[0] for x in dirs]
(もちろん、最後の2つの手順は次のようになります。あなたは本当にただのトップレベルのディレクトリは、その後、最後のステップのためにagroszerの答えと組み合わせる場合
import os
import zipfile
z = zipfile.Zipfile('some.zip', 'r')
dirs = list(set([os.path.dirname(x) for x in z.namelist()]))
組み合わせ:)
のpython 3では:
from zipfile import ZipFile
# All directories:
for f in zip_ref.namelist():
zinfo = zip_ref.getinfo(f)
if(zinfo.is_dir()):
print(f)
# Only root directories:
root_dirs = []
zip_ref = ZipFile("ZipFile.zip")
for f in zip_ref.namelist():
zinfo = zip_ref.getinfo(f)
if zinfo.is_dir():
# This is will work in any OS because the zip format
# specifies a forward slash.
r_dir = f.split('/')
r_dir = r_dir[0]
if r_dir not in root_dirs:
root_dirs.append(r_dir)
for d in root_dirs:
print(d)
私はに完全なリストotherwaysから目的のフォルダのリストを取得することができますo、しかし、私は10000フォルダの多くを持つジッパーのGBを持っています。私はちょうどより速い検索をしたい。 – Pythonpadavan
@Pythonpadavan:解決策はありますが、pythonicのやり方ではありません。Linuxでのみ動作します。>>> os.system( "unzip -l zip.zip | grep/$") 0 2011-06 -28 22:59 zip/one/ 0 '' zip.zip'をあなたの 'filename'で置き換えてください。 – Kracekumar
ありがとうございますが、操作sysが与えられています。 Windowsです。 – Pythonpadavan