2017-12-01 7 views
-2

Good Day !.Zip Pythonで複数の結果を持つ複数のファイル

「.xlsx(Excel)」ファイルのリストを特定のフォルダの場所から「.zip」ファイルに変換する方法をお聞きしたいと思います。 例: パス:= C:¥My_Program¥zip_files

私のzip_fileフォルダ内には複数の ".xlsx"ファイルがあります。 Test1.xlsx Test2.xlsx Test3.xlsx

と私は出力が同じフォルダになりたいが、個別に圧縮します。 出力: Test1.zip Test2.zip Test3.zip

ホープsomebadyは私がpython2かのpython3に新しいです私を助けることができます。

+0

を持つあなたは、任意のアクションをリストする必要がありますあなたは今までスタックオーバーフローを試みました。コード作成サービスではありません。 –

+0

にコードとエラーメッセージが表示されます。 – furas

+0

インポートzipファイル インポートOS working_folder = 'C:\\ My_Program \\ zip_files \\' ファイル= os.listdir(working_folder)ファイルでfに対する= [] – cjanraf

答えて

0

標準モジュールzipfileを使用してZIPを作成し、glob.glob()またはos.listdir()またはos.walk()を使用して、フォルダにファイル名を取得します。


EDIT:がすべき作品(私はLinux上で私の作品)

import os 
import zipfile 

folder = 'C:\\My_Program\\zip_files' 

for filename in os.listdir(folder): 
    if filename.endswith('.xlsx'): 

     name_without_extension = filename[:-5] # string `.xlsx` has 5 chars 

     xlsx_path = os.path.join(folder, filename) 
     zip_path = os.path.join(folder, name_without_extension + '.zip') 

     zip_file = zipfile.ZipFile(zip_path, 'w') 

     # use `filename` (without folder name) as name inside archive 
     # and it will not create folders inside archive 
     zip_file.write(xlsx_path, filename) 

     zip_file.close() 

EDIT:同じglob

import os 
import glob 
import zipfile 

folder = 'C:\\My_Program\\zip_files' 

for file_path in glob.glob(folder+'\\*.xlsx'): 

    filename = os.path.basename(file_path) 
    print(filename) 

    name_without_extension = filename[:-5] 
    print(name_without_extension) 

    xlsx_path = os.path.join(folder, filename) 
    zip_path = os.path.join(folder, name_without_extension + '.zip') 

    zip_file = zipfile.ZipFile(zip_path, 'w') 

    # use `filename` (without folder name) as name inside archive 
    # and it will not create folders inside archive 
    zip_file.write(xlsx_path, filename) 

    zip_file.close() 
+0

ここに私のコードはあります – cjanraf

関連する問題