0Pricing
Python Academy · Pelajaran

Menangkap Output

Baca stdout dan stderr

Menangkap Output adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Menangkap Keluaran Standar

Untuk membaca apa yang dicetak oleh perintah, teruskan capture_output=True. Teks tersebut muncul dalam atribut stdout pada hasil.

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)

Bita vs Teks

Secara bawaan, keluaran berupa bita. Teruskan text=True untuk mendapatkan teks yang telah didekode, yang biasanya lebih sesuai dengan kebutuhan Anda.

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))

Menghapus Baris Baru di Akhir

Keluaran perintah sering kali diakhiri dengan baris baru. Gunakan .strip() untuk membersihkannya sebelum menggunakan nilainya.

import subprocess

cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')

Menangkap Keluaran Kesalahan

Kesalahan biasanya dikirim ke stderr dan ditangkap secara terpisah. Dengan begitu, keluaran normal dan pesan kesalahan tetap terpisah.

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())

Menggunakan Keluaran dalam Kode

Keluaran yang ditangkap hanyalah teks, jadi Anda dapat menguraikannya: memisahkan baris, mengonversi angka, atau meneruskannya ke bagian lain dari program Anda.

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)

Mengalihkan Keluaran Kesalahan ke Keluaran Standar

Untuk menggabungkan keluaran kesalahan ke aliran normal, tetapkan stderr=subprocess.STDOUT. Keduanya kemudian muncul dalam stdout.

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
                    stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())

Menyediakan Masukan

Berikan data ke stdin sebuah perintah dengan argumen input. Di sini kita mengalirkan teks ke cat.

import subprocess

cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())

Pintasan check_output

subprocess.check_output() menjalankan perintah dan langsung mengembalikan stdout-nya, serta memunculkan kesalahan jika gagal. Ini adalah cara satu baris yang praktis untuk menangkap keluaran.

import subprocess

out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())

Membuang Keluaran

Untuk membungkam sebuah perintah, arahkan alirannya ke subprocess.DEVNULL.

import subprocess

cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)

Menangani Kesalahan dengan Keluaran

Saat menggunakan check=True, CalledProcessError yang dimunculkan tetap membawa output dan stderr yang ditangkap untuk penelusuran kesalahan.

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())

Menggabungkannya

Fungsi pembantu yang umum menjalankan perintah, memeriksa keberhasilan, lalu mengembalikan teks yang bersih. Ini merangkum pola yang sering digunakan.

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']))

Pemeriksaan Singkat

Uji pemahaman Anda tentang menangkap keluaran.

Ringkasan

Anda mempelajari cara menangkap keluaran:

  • capture_output=True bersama text=True menghasilkan stdout dan stderr berupa teks.
  • Gabungkan aliran dengan stderr=subprocess.STDOUT; bungkam keluaran dengan DEVNULL.
  • Berikan masukan melalui input=; check_output adalah pintasan.
  • Kesalahan membawa keluaran yang ditangkap untuk penelusuran kesalahan.

Berikutnya: membaca variabel lingkungan dan modul os.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menangkap Output” gratis?

Ya — teks lengkap “Menangkap Output” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menangkap Output”?

Baca stdout dan stderr Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menangkap Output” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menjalankan Perintah dengan subprocess
  2. Menangkap Output
  3. Lingkungan dan Modul os
  4. shutil untuk Operasi File
← Kembali ke Python Academy