Alt işlem - çağrı, check_call, check_output tarafından sağlanan işlevler hakkında bilgi veriyorum ve her birinin nasıl çalıştığını ve birbirlerinden nasıl farklılaştığını anladım. aşağıdaki gibi, Şu anda check_output kullanıyorum, bu yüzden Stdout'a erişebilir ve durum yakalamak için "blok deneyin" kullandı:Altprogram çağrısından çıkış kodunu ve stderr'i alın
# "cmnd" is a string that contains the command along with it's arguments.
try:
cmnd_output = check_output(cmnd, stderr=STDOUT, shell=True, timeout=3, universal_newlines=True);
except CalledProcessError:
print("Status : FAIL")
print("Output: \n{}\n".format(cmnd_output))
bir istisnası atılır zaman içine çalıştırıyorum konudur " cmnd_output" başlatılmadı ve stderr'e erişimi yok ve ben aşağıdaki hata iletisi alıyorum: istisna neden olduğu
print("Output: \n{}\n".format(cmnd_output))
UnboundLocalError: local variable 'cmnd_output' referenced before assignment
Ben buluyorsun öyle 'üzerinde değişiklik yapmadan hemen aka atama kurtarmak için check_output' try bloğunda "cmnd_output" olarak. Yanlışım varsa lütfen düzelt.
Stderr'e erişebilmem için herhangi bir yol var mı (çıkışa gönderilirse tamam) ve çıkış koduna erişiminiz var. Çıkış kodu istisna dışında istisna dışında çıkış/teslim başarısızlığı için manuel olarak kontrol edebilirim.
Teşekkür ederiz, Ahmed.
Müthiş. Bu sadece mükemmel çalıştı. Teşekkür ederim. –
Bu hatayı alıyorum: 'ret = subprocess.check_output (cmd, stderr = STDOUT, kabuk = True)' 'NameError: global adı 'STDOUT' tanımlı değil ' – ARH
@ARH, https: //docs.python. org/3/library/subprocess.html # subprocess.STDOUT – warvariuc