Menjalankan Perintah dengan subprocess
Jalankan program eksternal
Menjalankan Perintah dengan subprocess adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Apa Itu subprocess?
Modul subprocess memungkinkan program Python Anda menjalankan perintah eksternal dan program lain, seperti saat mengetikkannya di terminal.
import subprocess
result = subprocess.run(['echo', 'hello'])
print('return code:', result.returncode)Dasar-Dasar subprocess.run
subprocess.run() adalah titik masuk yang disarankan. Anda meneruskan perintah sebagai daftar argumen: nama program terlebih dahulu, kemudian setiap argumen secara terpisah.
import subprocess
result = subprocess.run(['echo', 'one', 'two'])
print('done with code', result.returncode)Mengapa Daftar, Bukan Teks?
Meneruskan daftar mencegah penerjemah perintah mengurai perintah Anda, sehingga mencegah kesalahan pengutipan dan risiko injeksi perintah. Setiap elemen adalah satu argumen.
import subprocess
# Safe: each piece is its own argument
subprocess.run(['echo', 'a file with spaces.txt'])Objek CompletedProcess
run() mengembalikan CompletedProcess yang berisi args, returncode, dan keluaran jika ditangkap. Kode 0 berarti berhasil.
import subprocess
cp = subprocess.run(['true'])
print('args:', cp.args)
print('returncode:', cp.returncode)Memeriksa Kode Keluar
Kode keluar yang bukan nol biasanya berarti perintah gagal. Anda dapat memeriksanya secara manual setelah pemanggilan selesai.
import subprocess
cp = subprocess.run(['ls', '/no/such/path'])
if cp.returncode != 0:
print('command failed with', cp.returncode)Memunculkan Kesalahan saat Gagal dengan check=True
Teruskan check=True agar run() secara otomatis memunculkan CalledProcessError ketika perintah berakhir dengan kode bukan nol.
import subprocess
try:
subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
print('failed with code', e.returncode)Meneruskan Argumen
Argumen perintah tambahan cukup ditambahkan sebagai item daftar lainnya. Di sini kita menampilkan isi direktori dalam format panjang.
import subprocess
subprocess.run(['echo', '-n', 'no newline'])
print()
print('above echo had -n flag')Menetapkan Batas Waktu
Gunakan timeout untuk membatalkan perintah yang berjalan terlalu lama. Tindakan ini memunculkan TimeoutExpired.
import subprocess
try:
subprocess.run(['sleep', '5'], timeout=0.1)
except subprocess.TimeoutExpired:
print('command took too long, aborted')Direktori Kerja
Argumen cwd menjalankan perintah dalam direktori tertentu tanpa mengubah direktori kerja program Anda sendiri.
import subprocess
subprocess.run(['pwd'], cwd='/tmp')Opsi shell=True
Dengan shell=True, Anda meneruskan satu teks perintah yang ditafsirkan oleh penerjemah perintah. Opsi ini mengaktifkan pipa dan pola pengganti, tetapi berisiko jika digunakan dengan masukan yang tidak tepercaya. Utamakan bentuk daftar.
import subprocess
subprocess.run('echo hello && echo world', shell=True)Menghindari os.system
os.system lama hanya mengembalikan kode keluar dan tidak menyediakan penerusan argumen yang aman atau penangkapan keluaran. subprocess.run menggantikannya untuk semua kode baru.
import subprocess
# Modern, safe approach
cp = subprocess.run(['echo', 'modern way'])
print('exit code:', cp.returncode)Pemeriksaan Singkat
Uji pemahaman Anda tentang menjalankan perintah.
Ringkasan
Anda mempelajari cara menjalankan perintah dengan subprocess:
subprocess.run([...])menjalankan program eksternal dengan aman.- Fungsi ini mengembalikan
CompletedProcessdenganreturncode. check=Truememunculkan kesalahan saat gagal;timeoutmembatalkan perintah yang lambat.- Utamakan bentuk daftar daripada
shell=True.
Berikutnya: menangkap keluaran perintah.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menjalankan Perintah dengan subprocess” gratis?
Ya — teks lengkap “Menjalankan Perintah dengan subprocess” 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 “Menjalankan Perintah dengan subprocess”?
Jalankan program eksternal 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 1 dari 4.
Berapa lama pelajaran “Menjalankan Perintah dengan subprocess” 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