0

たくさんのファイルを含むディレクトリ「C:\ Files」がある場合:

A_File1 A_File2 B_File1 B_File2

ファイルを反復処理して、同じプレフィックスを持つファイルを1つのzipファイルに圧縮するための最良の方法は何ですか?たとえば、出力は「A.zip」と「B.zip」およびそれらに関連するファイルになります。

私はファイルを反復処理する方法を知っています:

for item in os.listdir("C:\FILES"):

しかし、ファイルを圧縮するための最良の方法が何であるか、またはそれを支援するPythonライブラリがあるかどうかはわかりません。

4

3 に答える 3

1

os.listdirの代わりに、標準ライブラリのglobモジュールを使用します。

from glob import glob

for file in glob("C:\\FILES\\A_File*"):
    ...

(バックスラッシュを使用してdirを区切る場合は、2つを使用します。これは、1つがPython文字列のエスケープ文字であるためです)

于 2012-09-05T03:56:04.883 に答える
1

C:\FILES\これは、圧縮するファイルのみが含まれ、各ファイルの形式がであると想定していますPREFIX_*

import glob, os
import zipfile
import defaultdict

# We organize the file names in a dict to
# make writing out the zip files easier

d = defaultdict(list)

for fname in glob.glob(r'C:\FILES\*'):
   d[fname.split('_')[0]].append(fname)

# Now we go through each file by letter
for letter in d:
    with zipfile.ZipFile(letter+'.zip','w') as f:
        for filename in d[letter]:
            f.write(filename, os.path.basename(filename), zipfile.ZIP_DEFLATED)
于 2012-09-05T04:08:08.623 に答える
0
for fname in glob.glob('c:\files\A_*'):
    print fname
于 2012-09-05T03:57:16.223 に答える