'alt işlemi Popen arasındaki fark ne ve arama (bunları nasıl kullanabilirim)?
Python harici bir program aramak istiyorum. Popen()
call()
hem bunu kullandım.
İkisi arasındaki fark nedir?
Belirli bir amacım Python aşağıdaki komutu çalıştırmaktır. Yönlendirmeleri nasıl çalıştığını emin değilim.
./my_script.sh > output
the documentation call()
kolaylık bir işlev veya bir kısayol işlevi olduğunu yazıyor. Popen()
yerine call()
kullanarak herhangi bir güç kaybederiz?
CEVAP
Yönlendirme yapmak için iki yol vardır. Her ikisi de subprocess.Popen
subprocess.call
için geçerli.
Anahtar kelime değişken
shell = True
executable = /path/to/the/shell
* ve orada da dahil olmak üzere bütün komutunu belirtin.Sadece bir dosyaya çıktı yönlendirmek olduğuna göre, anahtar kelime durur
stdout = an_open_writeable_file_object
nesne
output
dosyasını işaret eder.
subprocess.Popen
subprocess.call
daha genel.
Popen
, çalışırken süreç etkileşim sağlayan, blok, veya diğer şeyler ile devam programda yok. 20* *çağrı Popen
bir nesne döndürür.
call
yokblok. Hala süreci' çıkışı, çevre değişkenleri, vb ayarlayabilirsiniz Popen
yapıcı olarak aynı argümanları destekler iken senaryonu programı tamamlamak için bekler, ve call
döndürür bir kod işlemini temsil eden' çıkış durumu.
returncode = call(*args, **kwargs)
temelde arama aynıdır
returncode = Popen(*args, **kwargs).wait()
call
sadece kolaylık işlevidir. CPython içinde uygulanması subprocess.py
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
Gördüğünüz gibi, Popen
etrafında ince bir sarıcı.
İkili ağaç ve ikili arasındaki fark ar...
Nasıl bir Arayüz ve Soyut bir sınıf ar...
onları aramak için nasıl xcode4 ve çer...
'devamı arasındaki fark ne ve bir...
XMLHttpRequest farklı readystates, ve ...