WindowsでPythonを使用して、gzip圧縮されたファイルを解凍せずに連結するメモリ効率の良い方法はありますか?
この回答に関するコメントによると、次のように簡単にする必要があります。
cat file1.gz file2.gz file3.gz > allfiles.gz
しかし、WindowsでPythonを使用してこれを行うにはどうすればよいですか?
WindowsでPythonを使用して、gzip圧縮されたファイルを解凍せずに連結するメモリ効率の良い方法はありますか?
この回答に関するコメントによると、次のように簡単にする必要があります。
cat file1.gz file2.gz file3.gz > allfiles.gz
しかし、WindowsでPythonを使用してこれを行うにはどうすればよいですか?
同じファイルに書き込み続けるだけです。
with open(..., 'wb') as wfp:
for fn in filenames:
with open(fn, 'rb') as rfp:
shutil.copyfileobj(rfp, wfp)
多くのファイルを 1 つにコピーするのに Python は必要ありません。これには、標準の Windows の「コピー」を使用できます。
copy file1.gz /b + file2.gz /b + file3.gz /b allfiles.gz
または、単純に:
copy *.gz /b allfiles.gz
ただし、Python を使用する場合は、Ignacio の回答の方が適しています。
もしも
cat file1.gz file2.gz file3.gz > allfiles.gz
動作する場合、これも動作するはずです:
fileList = ['file1.gz', 'file2.gz', 'file3.gz']
destFilename = 'allfiles.gz'
bufferSize = 8 # Adjust this according to how "memory efficient" you need the program to be.
with open(destFilename, 'wb') as destFile:
for fileName in fileList:
with open(fileName, 'rb') as sourceFile:
chunk = True
while chunk:
chunk = sourceFile.read(bufferSize)
destFile.write(chunk)