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=Truebersamatext=Truemenghasilkanstdoutdanstderrberupa teks.- Gabungkan aliran dengan
stderr=subprocess.STDOUT; bungkam keluaran denganDEVNULL. - Berikan masukan melalui
input=;check_outputadalah 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
- Menjalankan Perintah dengan subprocess
- Menangkap Output
- Lingkungan dan Modul os
- shutil untuk Operasi File