0Pricing
Python Academy · Ders

Çı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=True ile text=True birlikte kullanıldığında dize biçiminde stdout ve stderr elde edilir.
  • Akışları stderr=subprocess.STDOUT ile birleştirin; sessize almak için DEVNULL kullanın.
  • Girdiyi input= aracılığıyla aktarın; check_output bir 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.

Bu kursun tüm dersleri

  1. subprocess ile Komut Çalıştırma
  2. Çıktıyı Yakalama
  3. Ortam ve os Modülü
  4. Dosya İşlemleri için shutil
← Python Academy Sayfasına Dön