() translation by (you can also view the original English article)
Unix adalah sebuah sistem operasi yang dikembangkan sekitar tahun 1969 di AT&T Bell Labs oleh Ken Thompson dan Dennis Ritchie. Ada banyak perintah Unix yang menarik yang dapat kita gunakan untuk menjalankan tugas yang berbeda. Pertanyaannya adalah, dapatkah kita menggunakan perintah tersebut secara langsung di dalam sebuah program Python? Ini yang akan saya tunjukkan dalam tutorial ini.
Perintah Unix ls
memuat daftar semua file di dalam direktori Jika kamu meletakkan ls
dalam sebuah script Python, ini yang akan kamu dapatkan ketika kamu menjalankan program:
1 |
Traceback (most recent call last): |
2 |
File "test.py", line 1, in <module> |
3 |
ls
|
4 |
NameError: name 'ls' is not defined |
Ini menunjukkan bahwa penerjemah Python memperlakukan ls
sebagai sebuah variabel dan memerlukan itu untuk dijelaskan (yaitu diinisialisasi), dan tidak memperlakukannya sebagai sebuah perintah Unix.
os.system()
Satu solusi untuk isu ini adalah menggunakan os.system()
dari module os
Python.
Seperti disebutkan di dalam dokumentasi, os.system()
:
Mengeksekusi perintah (sebuah string) di dalam sebuah subshell. Ini diterapkan dengan memanggil sistem fungsi Standard C(), dan memiliki batasan yang sama.
Jadi, kita dapat menjalankan perintah ls
dalam Python seperti di bawah ini:
1 |
import os |
2 |
os.system('ls') |
Ini akan memunculkan daftar file dalam direktori terkini, yaitu dimana program .py
berada.
Mari kita ambil contoh lainnya. Jika kamu ingin memunculkan tanggal dan waktu terkini, kamu dapat menggunakan perintah Unix date
sebagai berikut:
1 |
import os |
2 |
os.system('date') |
Dalam kasus saya, ini yang saya dapatkan sebagai hasil script di atas:
Tue May 24 17:29:20 CEST 2016
call()
Walaupun os.system()
berfungsi, itu tidak direkomendasikan karena itu dianggap agak tua dan usang Solusi yang lebih direkomendasikan adalah modul subprocess
function call(args)
dari Python. Seperti yang disebutkan dalam dokumentasi tentang function ini:
Jalankan perintah yang dijelaskan oleh args. Tunggu perintah untuk menyelesaikan, lalu munculkan atribut returncode.
Jika kita ingin menjalankan perintah Unix ls
menggunakan metode ini, kita dapat melakukan seperti di bawah ini:
1 |
from subprocess import call |
2 |
call('ls') |
Mari kita lihat bagaimana kita dapat memunculkan tanggal menggunakan modul subprocess
, namn mari buat contoh yang lebih menarik.
1 |
import subprocess |
2 |
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
3 |
output, err = time.communicate() |
4 |
print 'It is', output |
Contoh di atas dapat dijalankan lebih sederhana menggunakan check_output()
, seperti di bawah ini:
1 |
import subprocess |
2 |
time = subprocess.check_output('date') |
3 |
print 'It is', time |
Output pada script di atas adalah:
It is Tue May 24 19:14:22 CEST 2016
Contoh-contoh di atas menunjukkan fleksibilitas dalam menggunakan function subprocess
yang berbeda, dan bagaimana kita dapat melewatkan hasil untuk variabel dengan tujuan menjalankan operasi lebih lanjut.
Kesimpulan
Seperti yang kita lihat dalam tutorial ini, perintah Unix dapat dipanggil dan dieksekusi menggunakan modul subprocess
, yang menyediakan lebih banyak fleksibilitas ketika berkerja dengan perintah Unix melalui fungsinya yang berbeda. Kamu dapat mempelajari lebih lanjut tentang modul ini dan function berbeda lainnya dari dokumentasi Python.