Birden çok subprocess.call
komutunu içeren bir python betiğim var. Mac üzerinde senaryo yazdım ve mükemmel çalışıyor. Sadece Windows üzerinde çalıştırmayı denedim ve bir hata ile şaşırdım.Bu Python alt işlem komutu neden sadece kabuk = Windows'ta doğru olduğunda çalışır?
ImageMagick çağırmak için aşağıdaki komutu "çıkış durumu 4" döndürür:
file1 = "D:/Temp/OCR_test/sample/images/crops/time_0011.png"
subprocess.call(['convert', file1, '-resize', '200%', file1])
aşağıdaki çalışmalara komutu değiştirme:
subprocess.call(['convert', file1, '-resize', '200%', file1], shell=True)
Özrüme
shell=True
kullanarak biraz dikkatli değilim belgelerdeki uyarılar.
Aynı zamanda hem Mac hem de Windows üzerinde çalışmak için komuta ihtiyacım var ve neden Windows üzerinde çalışmadığı konusunda kafam karıştı (Kontrol ettim ve komut Windows CMD'yi kullanarak çalışıyor). (
file
,
lat_crop1
ve
croplat
tanımlanan değişkenler olduğu)
İlginçtir, aşağıdaki satır komut daha önce çalışmış:
subprocess.call(['ffmpeg', '-loglevel', 'panic', '-i', file, '-vf', lat_crop1, '-n', croplat])
Ben this SO question okuyup shlex (tüm önerileri çalıştı, benim komuta varyasyonlar vb ...), ama yine de aynı sonucu elde ediyorum.
Herkes o shell=True
olmaksızın çalışmak, böylece bu çizgiyi değiştirebilir nasıl bir fikrin var?
Ayrıca, "çıkış durumu 4" ne anlama geliyor? Googled ve çok fazla doküman okudum ama bunun hakkında hiçbir şey bulamadım.
DÜZENLEME
: cevap sağlanan bilgilere dayanarak, bensubprocess.call(['mogrify', file1, '-resize', '200%', file1])
için çalışma değildi komuta değişti ve bu Windows üzerinde Python başarıyla çalışır. Neyse ki ImageMagick,
convert
'a alternatif olarak
mogrify
sağlar.
Dönüştürme komutu nedir? ImageMagick? – Blorgbeard
Evet, bu ImageMagick'den bahsetmeyi unuttum. Komut satırında çalışıyor. – Bird
, komut satırından 'convert 'yazabilir misiniz? –