Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでZIPFILEモジュールを使用してファイルを圧縮する方法。


問題

Pythonで圧縮ファイルを作成したい。

はじめに

ZIPファイルは、他の多くのファイルの圧縮された内容を保持できます。ファイルを圧縮すると、ディスク上のファイルのサイズが小さくなります。これは、インターネット経由で、またはControl-mAFTまたはConnectdirectまたはscpを使用してシステム間でファイルを転送する場合に便利です。

Pythonプログラムは、zipfileモジュールの関数を使用してZIPファイルを作成します。

方法...

1.zipfileおよびioパッケージを使用します。システムにパッケージがない場合は、pipを使用してインストールしてください。不明な場合は、pipfreezeコマンドを使用してパッケージを検証してください。

2.サンプルデータをファイルに書き込む関数を記述します。以下の関数write_data_to_filesは、データを入力として受け取り、現在のディレクトリ名にファイルを作成します。

#関数:write_data_to_filesdef write_data_to_files(inp_data、file_name): "" "関数:このcodeargsに渡されたデータを使用してcsvファイルを作成します:inp_data:ターゲットfilefile_nameに書き込まれるデータ:データを格納するターゲットファイル名return: noneassumption:作成するファイルとこのコードは同じディレクトリにあります。 "" "print(f"***データを-{file_name}")throwaway_storage =io.StringIO(inp_data)with open(file_name、'w' )as f:for line in throwaway_storage:f.write(line)

3.次に、上記の手順で作成したファイルをzipする関数file_compressを記述します。この関数はファイルのリストを受け入れ、それらを調べてzipファイルに圧縮します。各ステップの詳細な説明はコメントで提供されます。

独自の圧縮ZIPファイルを作成するには、2番目の引数として「w」を渡してZipFileオブジェクトを書き込みモードで開く必要があります。

ZipFileオブジェクトのwrite()メソッドにパスを渡すと、Pythonはそのパスでファイルを圧縮し、ZIPファイルに追加します。

write()メソッドの最初の引数は、追加するファイル名の文字列です。

2番目の引数は、圧縮タイプのパラメーターです。これは、ファイルを圧縮するために使用するアルゴリズムをコンピューターに指示します。

#Function:file_compressdef file_compress(inp_file_names、out_zip_file): "" "function:file_compressargs:inp_file_names:zip形式のファイル名のリストout_zip_file:出力zip filereturn:noneassumption:入力ファイルパスとこのコードは同じディレクトリにあります" "" #圧縮モードZIP_DEFLATEDを圧縮用に選択します#またはzipfile.ZIP_STOREDを選択して、filecompression =zipfile.ZIP_DEFLATEDprint(f "***入力ファイル名を圧縮用に渡します-{inp_file_names}")#zipファイルの最初のパラメーターパス/名前を作成します、second modeprint(f'*** out_zip_file is-{out_zip_file}')zf =zipfile.ZipFile(out_zip_file、mode ="w")try:for file_to_write in inp_file_names:#ファイルをzipファイルに追加#最初のパラメータファイルzip、zipprintの2番目のファイル名(f'***処理ファイル{file_to_write}')zf.write(file_to_write、file_to_write、compress_type =Compression)ただし、FileNotFoundError as e:print(f'***zipプロセス中に例外が発生しました-{ e}')finally:#ファイルを閉じることを忘れないでください!zf.close() 

4.関数を呼び出して2つのcsvファイルを作成し、それらを圧縮します。 1つのファイル(temporary_file1_for_zip.csv)で複数のグランドスラムタイトルを獲得したテニスプレーヤーのデータと、別のファイルtemporary_file1_for_zip.csvで1グランドスラム以下を獲得したテニスプレーヤーのデータを使用します。次に、これら両方のファイルをtemporary.zipファイルに圧縮します。

 import zipfileimport ioimport pandas as pdfile_name1 ="temporary_file1_for_zip.csv" file_name2 ="temporary_file2_for_zip.csv" file_name_list =[file_name1、file_name2] zip_file_name ="temporary.zip"#ファイル1file_data_1 ="" 、20Djokovic、17Murray、3 "" "#ファイル2file_data_2のデータ="" "player、titlesTheim、1Zverev、0Medvedev、0Rublev、0" ""#file_dataをfile_namewrite_data_to_files(file_data_1、file_name1)write_data_to_files(file_data file_nameをzip_file_namefile_compress(file_name_list、zip_file_name)に圧縮します

5.上記の手順で説明したすべてをまとめます。

#データを定義します#単一のfileimport zipfileimport ioimport pandasをpd#として使用してzipファイルを作成します:inp_data:ターゲットに書き込むデータfilefile_name:データを保存するターゲットファイル名return:noneassumption:作成するファイルとこのコードは同じディレクトリにあります。 "" "print(f"***データの書き込み-{ file_name} ")throwaway_storage =io.StringIO(inp_data)with open(file_name、'w')as f:for line in throwaway_storage:f.write(line)#Function:file_compressdef file_compress(inp_file_names、out_zip_file):" "" function :file_compressargs:inp_file_names:zipされるファイルのリストout_zip_file:出力zip filereturn:noneassumption:入力ファイルパスとこのコードは同じディレクトリにあります。 =zipfile.ZIP_DEFLA TEDprint(f "***zipに渡された入力ファイル名-{inp_file_names}")#zipファイルを作成します最初のパラメータパス/名前、2番目のmodeprint(f'*** out_zip_file is-{out_zip_file}')zf=zipfile。 ZipFile(out_zip_file、mode ="w")try:for file_to_write in inp_file_names:#ファイルをzipファイルに追加します#最初のパラメータファイルをzipに追加し、2番目のファイル名をzipprint(f'***処理ファイル{file_to_write}')zfに追加します。 write(file_to_write、file_to_write、compress_type =Compression)except FileNotFoundError as e:print(f'*** zipプロセス中に例外が発生しました-{e}')finally:#ファイルを閉じることを忘れないでください!zf.close() #__ main__ programif __name__ =='__main __':#ファイル名とdatafile_name1 ="temporary_file1_for_zip.csv" file_name2 ="temporary_file2_for_zip.csv" file_name_list =[file_name1、file_name2] zip_file_name ="temporary.zip" 、titlesFederer、20Nadal、20Djokovic、17Murray、3 "" "file_data_2 =" "" player、titlesTheim、1Zverev、0Medvedev、0Rublev、0 "" "#file_dataをfile_namewrite_dに書き込みますata_to_files(file_data_1、file_name1)write_data_to_files(file_data_2、file_name2)#file_nameをzip_file_namefile_compress(file_name_list、zip_file_name)に圧縮します
***データの書き込み先--temporary_file1_for_zip.csv***データの書き込み先--temporary_file2_for_zip.csv***入力ファイル名はzip形式で渡されます-['temporary_file1_for_zip.csv'、'temporary_file2_for_zip.csv'] ** *out_zip_fileは--temporary.zip***処理ファイルtemporary_file1_for_zip.csv***処理ファイルtemporary_file2_for_zip.csv

出力

上記のコードを実行すると、出力は

  • 現在のディレクトリに作成されたtemporary_file1_for_zip.csv。

  • 現在のディレクトリに作成されたtemporary_file2_for_zip.csv。

  • temporary.zipファイルが現在のディレクトリに作成されます。


  1. LinuxでZipファイルを抽出する方法

    Zipファイルは、ダウンロード速度が遅く、保存されたすべてのバイトが重要だったときほど一般的ではありません。それでも、これはかなり一般的なファイルタイプです。遅かれ早かれ、おそらく1つ開く必要があります。 使用するディストリビューションによっては、zipアーカイブを抽出するのはおそらくかなり簡単です。それでも、zipファイルを開いてその内容を処理するためのより高度な方法を知っていても問題はありません。 GUIを使用した解凍 ほとんどのLinuxデスクトップ環境では、ファイルを解凍するのは簡単です。ファイルを右クリックするだけで、いくつかのオプションが表示されます。通常、「ここで抽出」または

  2. macOSで「圧縮」および「解凍」ファイルを圧縮する方法

    zipファイルは、1つのファイルに圧縮された1つ以上のファイルまたはフォルダーのコレクションです。コンピュータのストレージスペースを節約し、すべてのファイルを整理します。圧縮ファイルは、フラッシュドライブまたは電子メールを介して転送する方がはるかに簡単です。サーバーへのソフトウェアのダウンロードのほとんどは、サーバーのストレージスペースを節約するためにzipファイルになっています。この記事では、macOSでファイルを圧縮(zip)および解凍(解凍)する手順について説明します。 ma​​cOSでのファイルの圧縮/圧縮 ほとんどのオペレーティングシステムには、ファイルとフォルダをzipファイ