Aşağıdaki kod parçacığı bir gzip dosya tanıtıcısını açar ve ona bir satır yazar, daha sonra yeniden ekleme modunda açılır ve bir alt işlemin stdoutunu gzipli dosya tanıtıcısına yeniden yönlendirir.Python bağlantıları "gzip.open" dosyası için
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)
Ben kendisine yazdıklarını görmek için dosyayı açmak için çalıştığınızda, ben
$ gunzip file.txt.gz
gzip: file.txt.gz: decompression OK, trailing garbage ignored
sıkıştırılmış içeriği ilk satırda ibarettir aşağıdaki hatayı olsun
$ cat file.txt
this is the first line
Bir satır yazmak için ve bir işlemin çıktı olarak aynı dosya tanıtıcısını kullandığımda, gunzip
tarafından bile tanınmayan bir dosya alıyorum.
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)
Örneğin, gunzip
d' olamaz bir dosya oluşturur.
$ gunzip file.txt.gz
gzip: file.txt.gz: not in gzip format
subprocess
üzerinden bir süreç vadede bir gzip aromalı sözde dosya tanıtıcısından geçen bir yolu var mı yoksa gerçekten olmayan sıkıştırılmış dosya yazma ve sonra geri dönüyor ve onu sıkıştırarak için başka alternatif yok?