Çıktıyı Yakalama
stdout ve stderr okuyun
Çıktıyı Yakalama, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
Standart Çıktıyı Yakalama
Bir komutun yazdırdıklarını okumak için capture_output=True geçirin. Metin, sonuç nesnesinin stdout özniteliğinde görünür.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)Baytlar ve Metin
Varsayılan olarak çıktı baytlardır. Bunun yerine kodu çözülmüş dizeler almak için text=True geçirin; genellikle istediğiniz şey budur.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))Sondaki Satır Sonunu Kaldırma
Komut çıktısı genellikle bir satır sonuyla biter. Değeri kullanmadan önce temizlemek için .strip() kullanın.
import subprocess
cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')Standart Hata Çıktısını Yakalama
Hatalar genellikle ayrı olarak yakalanan stderr akışına gider. Bu, normal çıktı ile hata iletilerini birbirinden ayırır.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())Çıktıyı Kodda Kullanma
Yakalanan çıktı yalnızca bir dizedir; bu nedenle onu ayrıştırabilir, satırlara bölebilir, sayılara dönüştürebilir veya programınızın geri kalanına aktarabilirsiniz.
import subprocess
cp = subprocess.run(['printf', 'a\nb\nc\n'], capture_output=True, text=True)
lines = cp.stdout.splitlines()
print('line count:', len(lines))
print(lines)stderr Akışını stdout'a Yönlendirme
Hata çıktısını normal akışla birleştirmek için stderr=subprocess.STDOUT ayarını yapın. Böylece her ikisi de stdout içinde görünür.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())Girdi Sağlama
Verileri bir komutun standart girdisine input bağımsız değişkeniyle aktarın. Burada metni cat komutuna yönlendiriyoruz.
import subprocess
cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())check_output Kısayolu
subprocess.check_output(), bir komutu çalıştırır ve standart çıktısını doğrudan döndürür; başarısızlıkta hata oluşturur. Yakalama işlemi için kullanışlı bir tek satırlık çözümdür.
import subprocess
out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())Çıktıyı Yok Sayma
Bir komutu sessize almak için akışlarını subprocess.DEVNULL konumuna yönlendirin.
import subprocess
cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)Çıktıyla Hataları İşleme
check=True kullanıldığında oluşturulan CalledProcessError, tanılama amacıyla yakalanan output ve stderr bilgilerini yine de içerir.
import subprocess
try:
subprocess.run(['ls', '/missing'], capture_output=True, text=True, check=True)
except subprocess.CalledProcessError as e:
print('failed:', e.returncode)
print('stderr:', e.stderr.strip())Hepsini Bir Araya Getirme
Tipik bir yardımcı işlev bir komutu çalıştırır, başarıyı denetler ve temiz metin döndürür. Bu, yaygın düzeni kapsüller.
import subprocess
def capture(cmd):
cp = subprocess.run(cmd, capture_output=True, text=True, check=True)
return cp.stdout.strip()
print(capture(['echo', 'final result']))Kısa Kontrol
Çıktı yakalama hakkındaki anlayışınızı sınayın.
Özet
Çıktı yakalamayı öğrendiniz:
capture_output=Trueiletext=Truebirlikte kullanıldığında dize biçimindestdoutvestderrelde edilir.- Akışları
stderr=subprocess.STDOUTile birleştirin; sessize almak içinDEVNULLkullanın. - Girdiyi
input=aracılığıyla aktarın;check_outputbir kısayoldur. - Hatalar, hata ayıklama için yakalanan çıktıyı içerir.
Sırada: ortam değişkenlerini ve os modülünü okuma.
Sıkça Sorulan Sorular
“Çıktıyı Yakalama” dersi ücretsiz mi?
Evet — “Çıktıyı Yakalama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“Çıktıyı Yakalama” dersinde ne öğreneceğim?
stdout ve stderr okuyun Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Çıktıyı Yakalama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.