0
下面的代碼片斷打開一個gzip文件句柄,並向它寫入一行,然後以append模式再次打開它,並將子進程的stdout重定向到gzip文件句柄。Python管道到`gzip.open`文件句柄
import gzip
import subprocess
with gzip.open("./file.txt.gz", "w") as fh:
fh.write("this is the first line\n")
with gzip.open("./file.txt.gz", "a") as fh:
subprocess.call("echo this is the second line", shell=True, stdout=fh)
當我嘗試解壓縮文件,看看我寫它,我得到以下錯誤
$ gunzip file.txt.gz
gzip: file.txt.gz: decompression OK, trailing garbage ignored
解壓後的內容只包括第一線的
$ cat file.txt
this is the first line
當我使用相同的文件句柄來寫一行和作爲一個進程的輸出時,我得到一個甚至不被gunzip
識別的文件。
import gzip
import subprocess
with gzip.open("./file.txt.gz", "w") as fh:
fh.write("this is the first line\n")
subprocess.call("echo this is the second line", shell=True, stdout=fh)
例如,產生的文件不能是gunzip
'd。
$ gunzip file.txt.gz
gzip: file.txt.gz: not in gzip format
是否有通過subprocess
傳遞一個gzip味僞文件句柄到一個進程運行方式或者是真的沒有替代書寫非壓縮文件,然後回去和壓縮呢?