2017-12-19 24 views
0

こんにちは、 私は12のファイルを含むディレクトリを持っています。私はそれぞれに3つのファイルと4つの別々のzipファイルを作成したいと思います。ヒッチは、ファイル名に基づいてzipファイルの名前を動的に付けたいということです。 (各ファスナーの3つはすべて同じから始まる)Pythonで動的な名前のファイルを圧縮する

ie。

IT-12123.txt 
IT-12123.pdf 
IT-12123.xls 

IT-23232.txt 
IT-23232.pdf 
IT-23232.xls 

私も(そのzipファイルにこれらのファイルのすべてを)IT-12123.zipと呼ばれるジップ

(そのジップでこれらのファイルのすべてに)IT-23232.zipを作成したいですありがとうございました

+2

コードを共有していただけますか?あなたは動的でない名前のファイルを圧縮することができますか?誰かにもあなたのためにそのコードを書いてもらいたいですか? – DevB2F

+0

[SO]へようこそ! Stack OverflowはQ&Aサイトです。あなたのような読者は、他の読者がその質問に答えようとしている間に質問をします。あなたの投稿にはたくさんの良い情報がありますが、1つの重要な要素が欠けています:質問!あなたは何を求めていますか? (ちなみに、[ツアー]に行って、瞬間があるときは[質問]を読んでください) –

+0

これを見てください:https://stackoverflow.com/questions/678236/how-to-get-the-filename- nildirect = 1&lq = 1 –

答えて

0

ファイルがすべて同じフォルダにある場合、ここには簡単な解決策があります。

import itertools 
import glob 
import os 
import zipfile 
# move to the directory where the files are located 
os.chdir("/mydir") 
# find all files starting with IT 
files = glob.glob('IT*') 
files_no_ext = [] 
for file in files: 
    # remove extension from files names 
    files_no_ext.append(os.path.splitext(file)[0]) 
# group no extension files by name 
grouped_files= itertools.groupby(files_no_ext) 
for name, group in grouped_files: 
    zipped = zipfile.ZipFile(name+'.zip', 'w') 
    to_zip = glob.glob(name+'*') 
    for file in to_zip: 
     zipped.write(file) 
    zipped.close() 
関連する問題