ホームページ  >  記事  >  バックエンド開発  >  Python チュートリアル: Python を使用して大きなファイルを分割および結合するにはどうすればよいですか?

Python チュートリアル: Python を使用して大きなファイルを分割および結合するにはどうすればよいですか?

WBOY
WBOY転載
2023-04-22 11:43:081979ブラウズ

場合によっては、大きなファイルを他の人に送信する必要がありますが、電子メールの添付ファイルのサイズ制限やネットワークの状態があまり良くないなど、送信チャネルの制限により、ファイルを分割する必要があります。大きなファイルを小さなファイルに分割して複数回送信すると、受信側でこれらの小さなファイルがマージされます。今回はPythonを使って大きなファイルを分割・結合する方法を紹介します。

アイデアと実装

テキストファイルであれば行数で区​​切ることができます。テキストファイルでもバイナリファイルでも、指定したサイズに応じて分割できます。

Python のファイル読み取りおよび書き込み機能を使用すると、ファイルを分割および結合し、各ファイルのサイズを設定し、指定したサイズのバイトを読み取り、新しいファイルに書き込むことができます。受信側は小さいファイルを読み取ります。ファイルに読み込んだバイトを順番にファイルに書き込むと、マージが完了します。

Split

size = 1024 * 1000 * 10# 10MB
with open("bigfile", "rb") as reader:
part = 1
while True:
part_content = reader.read(size)
if not part_content:
print("split done.")
break
with open(f"bigfile_part{part}","wb") as writer:
writer.write(part_content)

Merge

total_parts = 5
with open("bigfile","wb") as writer:
for i in range(5):
with open(f"bigfile_part{i}", "rb") as reader:
writer.write(reader.read())

サードパーティのライブラリを使用する

次のように書くこともできます自分で書いたものですが、他の人が書いたものなので、時間を節約して直接使用してみてはいかがでしょうか? pip を使用して直接インストールするだけです:

pip install filesplit

Split

from filesplit.split import Split
split = Split("./data.rar", "./output")
split.bysize(size = 1024*1000*10) # 每个文件最多 10MB

実行後、出力フォルダーに分割されたファイルが表示されます:

一文教会你如何用 Python 分割合并大文件

ファイル内の行数に応じて分割することもできます:

split.bylinecount(linecount = 10000) # 每个文件最多 10000 行

マージ

マージするには、フォルダー内に小さなファイルが必要です, このツールでは、フォルダー内にマニフェスト ファイルが存在する必要があります。その形式は次のとおりです:

filename,filesize,header
data_1.rar,10000000,False
data_2.rar,10000000,False
data_3.rar,10000000,False
data_4.rar,10000000,False
data_5.rar,1304145,False

ファイルをマージするコードで必要なのは、マージするディレクトリ、ターゲット ディレクトリ、および

from filesplit.merge import Merge
merge = Merge(inputdir = "./output", outputdir="./merge", outputfilename = "merged.rar")
merge.merge()

実行後、マージ ディレクトリにマージされたファイルが表示されます:

一文教会你如何用 Python 分割合并大文件

以上がPython チュートリアル: Python を使用して大きなファイルを分割および結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。