Topik Isi:
- Jalankan Perintah Linux Sederhana
- Jalankan Perintah dengan Input Data
- Jalankan Skrip Python
- Tangani Kesalahan Subproses
- Kembalikan Kode Subproses.Popen
- Arahkan Output Subproses ke File
- Multiproses Menggunakan Subproses.Popen
- Tangani Aliran Input dan Output S
- Kontrol Batas Waktu dan Penundaan
- Membaca Input Streaming
Jalankan Perintah Linux Sederhana
Perintah “tanggal” digunakan untuk menampilkan tanggal dan waktu sistem saat ini. Buat file Python dengan skrip berikut yang membuat subproses yang menjalankan perintah “date” dan mencetak output dari perintah ini:
#Impor modulimpor subproses
#Tentukan perintah untuk subproses dan
#buka proses dengan menggunakan fungsi Popen()
keluaran = subproses . terbuka ( [ 'tanggal' ] , stdout = subproses . PIPA )
#Ambil output dan kesalahan dengan berkomunikasi dengan proses
stdout , stderr = keluaran. menyampaikan ( )
#Cetak hasilnya
mencetak ( stdout. membaca sandi ( ) )
Keluaran:
Output berikut muncul setelah menjalankan skrip sebelumnya:
Jalankan Perintah dengan Input Data
Perintah “wc” dengan opsi “-c” digunakan untuk menghitung jumlah total karakter nilai string yang disediakan dengan perintah ini. Buat file Python dengan skrip berikut yang membuat subproses dengan fungsi Popen() untuk menjalankan perintah “wc –c”. Nilai string diambil dari terminal setelah menjalankan skrip dan total karakter string input dicetak di output.
#Impor modulimpor subproses
#Tentukan perintah untuk subproses dan
#Buka proses dengan menggunakan fungsi Popen()
keluaran = subproses . terbuka ( [ 'toilet' , '-C' ] , stdout = subproses . PIPA )
#Ambil output dan kesalahan dengan berkomunikasi dengan proses
stdout , stderr = keluaran. menyampaikan ( )
#Cetak hasilnya
mencetak ( stdout. membaca sandi ( ) )
Keluaran:
Output berikut muncul untuk nilai input “Contoh Subproses Python”:
Jalankan Skrip Python
Buat file Python bernama “sum.py” dengan skrip berikut yang menghitung jumlah dua angka dan angka-angka ini disediakan sebagai argumen baris perintah:
jumlah.py
#Impor modul yang diperlukanimpor sy
#Hitung total argumen
N = hanya ( sy . argv )
#Tambahkan dua nilai argumen pertama
jumlah = ke dalam ( sy . argv [ 1 ] ) + ke dalam ( sy . argv [ 2 ] )
#Cetak hasil penjumlahan
mencetak ( 'Jumlah dari ' + sy . argv [ 1 ] + ' Dan ' + sy . argv [ 2 ] + ' adalah' , jumlah )
Buat Python mengajukan dengan skrip berikut yang akan menjalankan Python mengajukan bernama jumlah . py dengan dua argumen dengan membuat a subproses .
#Impor modul
impor subproses
#Jalankan skrip python di subproses dan
#buka proses dengan menggunakan fungsi Popen()
keluaran = subproses . terbuka ( [ 'piton3' , 'jumlah.py' , '25' , '55' ] , stdout = subproses . PIPA ) #Ambil output dan kesalahan dengan berkomunikasi dengan proses
stdout , stderr = keluaran. menyampaikan ( )
#Cetak hasilnya
mencetak ( stdout. membaca sandi ( ) )
Keluaran:
Output berikut muncul setelah menjalankan skrip sebelumnya:
`
Tangani Kesalahan Subproses
Buat file Python dengan skrip berikut yang menangani kesalahan subproses menggunakan blok “coba-kecuali”. Sebuah perintah diambil dari pengguna dan dieksekusi oleh subproses. Pesan kesalahan ditampilkan jika ada perintah yang tidak valid diambil dari pengguna.
#Impor modulimpor subproses
impor sy
#Ambil perintah dari pengguna
memerintah = memasukkan ( 'Masukkan perintah yang valid:' )
mencoba :
#Buka proses dengan menggunakan fungsi Popen()
keluaran = subproses . terbuka ( [ memerintah ] , stdout = subproses . PIPA )
#Ambil output dan kesalahan dengan berkomunikasi dengan proses
stdout , stderr = keluaran. menyampaikan ( )
#Cetak hasilnya
mencetak ( stdout. membaca sandi ( ) )
kecuali :
mencetak ( 'Kesalahan:' , sy . exc_info ( ) )
Keluaran:
Output berikut muncul jika perintah “pwd” diambil sebagai input yang merupakan perintah yang valid:
Output berikut muncul jika perintah “usr” diambil sebagai input yang merupakan perintah yang valid:
Kembalikan Kode Subproses.Popen
Buat file Python dengan skrip berikut yang menjalankan perintah “ls” melalui subproses untuk mendapatkan daftar semua file Python dari lokasi saat ini. Skrip menunggu untuk menyelesaikan subproses dan mencetak kode pengembalian.
#Impor modulimpor subproses
impor sy
#Atur perintahnya
memerintah = [ 'aku' , '-aku' , '*.py' ]
mencoba :
#Buka proses dengan menggunakan fungsi Popen()
keluaran = subproses . terbuka ( memerintah , stdout = subproses . PIPA ,
stderr = subproses . PIPA , teks = BENAR )
#Tunggu hingga prosesnya selesai
kode ulang = keluaran. Tunggu ( )
#Cetak kode pengembalian
mencetak ( 'Kode Pengembalian:' , kode ulang )
kecuali :
#Cetak pesan kesalahan untuk yang salah
mencetak ( 'Kesalahan:' , sy . exc_info ( ) )
Keluaran:
Output serupa muncul setelah menjalankan skrip sebelumnya:
Arahkan Output Subproses ke File
Buat file Python dengan skrip berikut yang menulis output subproses dalam file teks. Perintah yang dijalankan oleh subproses diambil dari pengguna.
#Impor modulimpor subproses
#Tentukan nama file
nama file = 'file keluar.txt'
#Ambil perintah ping
cmd = memasukkan ( 'Masukkan perintah ping:' )
#Pisahkan masukan yang diambil berdasarkan spasi
argumen = cmd . membelah ( )
#Tulis keluaran perintah dalam file
dengan membuka ( nama file , 'Di dalam' ) sebagai data keluar:
proses = subproses . terbuka ( argumen , stdout = data keluar )
#Tunggu hingga proses selesai
kode_kembali = proses. Tunggu ( )
Keluaran:
Menurut output berikut, perintah “ping -c 3 www.google.com ” Perintah diambil dari pengguna dan perintah “cat” digunakan untuk menampilkan konten file yang ditulis oleh subproses:
Multiproses Menggunakan Subproses.Popen
Buat file Python dengan skrip berikut di mana penggunaan multiprosesor ditampilkan menggunakan subproses. Di sini, fungsi bernama display_msg() dipanggil beberapa kali menggunakan multiprosesor.
#Impor modul yang diperlukanimpor multiproses
impor subproses
#Tentukan fungsi yang akan dipanggil dengan multiprosesing
def tampilan_pesan ( N ) :
#Tentukan perintah dengan fungsi format()
cmd = 'gema 'Pemrograman Python'' . format ( N )
#Buka proses dengan menggunakan fungsi Popen()
proses = subproses . terbuka ( cmd , kerang = BENAR , stdout = subproses . PIPA )
#Ambil output dan kesalahan dengan berkomunikasi dengan proses
stdout , kesalahan = proses. menyampaikan ( )
#Cetak hasilnya
mencetak ( stdout. membaca sandi ( ) )
#Panggil fungsi 5 kali dengan membuat multiprocessing.Pool
dengan multiproses. Kolam ( multiproses. cpu_count ( ) ) sebagai mp:
#Petakan fungsinya
mp. peta ( tampilan_pesan , jangkauan ( 1 , 5 ) )
Keluaran:
Output berikut muncul setelah menjalankan skrip sebelumnya:
Tangani Aliran Input dan Output
Buat file teks bernama “test.txt” dengan konten berikut sebelum membuat skrip Python dari contoh ini.
tes.txt
PERL
ular piton
pesta
php
Buat file Python dengan skrip berikut yang menggunakan satu subproses untuk membaca konten file “test.txt” dan subproses lain untuk mencari kata tertentu dalam file teks tersebut. Di sini, kata “python” dicari di “file test.txt” yang berisi kata ini.
#Impor modulimpor subproses
#Tentukan proses untuk aliran input
dalam_proses = subproses . terbuka ( [ 'kucing' , 'tes.txt' ] , stdout = subproses . PIPA , teks = Benar > #Tentukan proses untuk aliran keluaran
keluar_proses = subproses . terbuka (
[ 'pegangan' , 'piton' ] , stdin = dalam_proses. stdout ,
stdout = subproses . PIPA , teks = BENAR )
#Simpan output dari proses input dan output
keluaran , _ = keluar_proses. menyampaikan ( )
#Cetak hasilnya
mencetak ( 'Keluaran:' , keluaran )
Keluaran:
Output berikut muncul setelah menjalankan skrip:
Kontrol Subproses Menggunakan Timer
Buat file Python dengan skrip berikut yang menggunakan pengatur waktu untuk menjalankan perintah menggunakan subproses. Di sini, blok “coba-kecuali” digunakan untuk memulai pengatur waktu dan blok “akhirnya” digunakan untuk membatalkan pengatur waktu.
#Impor modul subprosesimpor subproses
#Impor modul Timer
dari threading impor pengatur waktu
#Tentukan perintahnya
cmd = [ 'ping' , 'www.example.com' ]
#Buka prosesnya
P = subproses . terbuka (
cmd , stdout = subproses . PIPA , stderr = subproses . PIPA )
#Tentukan pengatur waktunya
pengatur waktu = pengatur waktu ( 2 , lambda proses: proses. membunuh ( ) , [ P ] )
mencoba :
#Mulai pengatur waktunya
pengatur waktu. awal ( )
#Baca keluaran
stdout , _ = P. menyampaikan ( )
#Cetak keluaran
mencetak ( stdout. membaca sandi ( ) )
kecuali :
#Cetak pesan kesalahan untuk yang salah
mencetak ( 'Kesalahan:' , sy . exc_info ( ) )
Akhirnya :
#Hentikan pengatur waktunya
pengatur waktu. membatalkan ( )
Keluaran:
Output berikut muncul setelah menjalankan skrip:
Baca Masukan Streaming
Buat file Python yang membaca konten output subproses menggunakan loop 'sementara' dan menyimpan konten ke dalam variabel. Isi variabel ini dicetak nanti. Di sini, perintah “curl” digunakan dalam subproses untuk www.google.com URL.
#Impor modulimpor subproses
#Tentukan perintah
cmd = [ 'keriting' , 'www.example.com' ]
P = subproses . terbuka ( cmd , stdout = subproses . PIPA ,
stderr = subproses . PIPA , teks = BENAR >
#Inisialisasi variabel keluaran
keluaran = ''
ketika BENAR :
#Baca keluaran proses baris demi baris
dalam = P. stdout . garis baca ( )
#Hentikan dari loop ketika subproses selesai
jika bukan dalam:
merusak
keluaran = keluaran + ln
#Cetak garisnya
mencetak ( keluaran )
#Dapatkan kode pengembalian setelah menyelesaikan proses
kode_kembali = P. Tunggu ( )
#Cetak kode pengembalian
mencetak ( 'Kode pengembalian:' , kode_kembali )
Keluaran:
Bagian terakhir dari tiga keluaran ditunjukkan pada gambar berikut. Kode pengembalian setelah menyelesaikan subproses adalah 0:
Kesimpulan
Penggunaan berbeda dari subproses Python.Popen() ditampilkan dalam tutorial ini menggunakan beberapa skrip Python yang akan membantu pengguna Python mengetahui penggunaan dasar fungsi ini.