Cara Melaksanakan Perintah Luaran dalam Python

Python subprocess

Menjalankan Perintah Sistem daripada Python

Python menyediakan keupayaan berkuasa untuk melaksanakan program luaran dan arahan sistem terus daripada skrip anda. Ciri ini membolehkan anda memanfaatkan kesederhanaan Python sambil memanfaatkan pelbagai alat yang tersedia dalam sistem pengendalian anda.

Sama ada anda mengautomasikan tugasan berulang atau menyepadukan aliran kerja yang kompleks, memahami cara memanggil arahan sistem dalam Python boleh meningkatkan produktiviti anda dengan ketara. Dalam panduan ini, kami akan meneroka kaedah yang berbeza untuk mencapai ini dengan berkesan.

Perintah Penerangan
subprocess.run Melaksanakan arahan dalam subkulit. Boleh menangkap output dan ralat.
subprocess.run([...], capture_output=True) Menangkap output standard dan ralat standard arahan yang dilaksanakan.
subprocess.run([...], shell=True) Menjalankan arahan melalui shell, membenarkan ciri shell seperti kad bebas.
subprocess.Popen Melaksanakan arahan dalam proses baharu, memberikan lebih kawalan ke atas pelaksanaannya.
process.stdout.readline() Membaca baris output daripada output standard proses.
os.system Melaksanakan arahan dalam subkulit, biasanya digunakan untuk pelaksanaan perintah mudah.
subprocess.check_output Menjalankan arahan dan mengembalikan outputnya. Menimbulkan pengecualian jika arahan gagal.
os.environ.copy() Mencipta salinan pembolehubah persekitaran semasa, membenarkan pengubahsuaian.
env parameter in subprocess.run Menentukan pembolehubah persekitaran untuk proses baharu.

Memahami Perlaksanaan Skrip dalam Python

Skrip yang disediakan menunjukkan pelbagai cara untuk melaksanakan arahan luaran menggunakan Python. The arahan adalah serba boleh, membolehkan anda menjalankan arahan shell terus daripada skrip Python anda. Sebagai contoh, mencetak mesej ke konsol, sambil menangkap output daripada ls -l arahan, memaparkan senarai direktori terperinci. menggunakan dengan membenarkan penggunaan ciri cangkerang, seperti pengembangan kad bebas, menjadikannya berguna untuk arahan yang lebih kompleks.

The arahan memberikan lebih kawalan ke atas pelaksanaan perintah dengan membenarkan perintah tak segerak berjalan dan interaksi dengan aliran input dan output proses. Sebagai contoh, contoh skrip dengan terus ping mesin tempatan dan membaca setiap baris output. Selain itu, digunakan untuk pelaksanaan perintah mudah tetapi tidak mempunyai fleksibiliti subprocess. Pembolehubah persekitaran boleh diubah suai dan dihantar ke subproses menggunakan dan juga parameter dalam , membenarkan pelaksanaan arahan dinamik berdasarkan persekitaran.

Melaksanakan Perintah Luaran dalam Python

Menggunakan modul subproses Python

import subprocess
# Example 1: Running a simple shell command
subprocess.run(['echo', 'Hello, World!'])
# Example 2: Capturing the output of a command
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
# Example 3: Running a command with shell=True
subprocess.run('echo Hello from the shell', shell=True)
# Example 4: Checking the return code
result = subprocess.run(['ls', 'nonexistentfile'], capture_output=True)
if result.returncode != 0:
    print('Command failed')
# Example 5: Using subprocess.Popen for more control
process = subprocess.Popen(['ping', 'localhost'], stdout=subprocess.PIPE)
while True:
    output = process.stdout.readline()
    if output == b'' and process.poll() is not None:
        break
    if output:
        print(output.strip().decode())

Mengautomasikan Tugas Sistem dengan Python

Menggunakan os.system dan modul subproses

import os
import subprocess
# Example 1: Using os.system to run a command
os.system('echo This is a test')
# Example 2: Running a command and capturing output with subprocess
result = subprocess.run(['date'], capture_output=True, text=True)
print('Current date and time:', result.stdout)
# Example 3: Executing multiple commands
commands = ['echo First command', 'echo Second command']
for cmd in commands:
    os.system(cmd)
# Example 4: Running a command with environment variables
env = os.environ.copy()
env['MY_VAR'] = 'Hello'
subprocess.run('echo $MY_VAR', shell=True, env=env)
# Example 5: Handling command errors
try:
    subprocess.check_output(['false_command'], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as e:
    print('An error occurred:', e.output.decode())

Teknik Lanjutan untuk Pelaksanaan Perintah Sistem

Satu lagi aspek dalam melaksanakan perintah sistem dalam Python melibatkan penggunaan modul untuk mengendalikan penghuraian arahan shell. Modul ini menyediakan cara untuk memisahkan arahan shell ke dalam format senarai, yang kemudiannya boleh dihantar ke fungsi. Ini memastikan bahawa hujah dengan ruang dikendalikan dengan betul. Selain itu, anda boleh menggunakan untuk mengarahkan input, output dan aliran ralat standard kepada proses induk, membolehkan komunikasi antara proses yang lebih kompleks.

Sebagai contoh, merantai perintah dan memproses keluarannya secara berurutan boleh dicapai dengan menyalurkan keluaran satu perintah ke yang lain menggunakan . Ini membolehkan anda mencipta urutan perintah yang berkuasa serupa dengan apa yang anda akan lakukan dalam skrip shell. Anda juga boleh menggunakan untuk menjalankan berbilang arahan subproses secara serentak, meningkatkan kecekapan skrip anda, terutamanya apabila menangani tugas terikat I/O.

  1. Bagaimanakah saya boleh menjalankan perintah shell dan mendapatkan outputnya dalam Python?
  2. guna dengan untuk menangkap output arahan.
  3. Apakah perbezaan antara dan ?
  4. ialah antara muka yang lebih ringkas yang menunggu arahan selesai, manakala memberikan lebih kawalan ke atas pelaksanaan arahan, membolehkan operasi tak segerak.
  5. Bagaimanakah saya mengendalikan ralat semasa menjalankan arahan sistem?
  6. guna dan blok dengan untuk menangkap dan menangani ralat.
  7. Bolehkah saya menghantar pembolehubah persekitaran kepada arahan?
  8. Ya, gunakan parameter dalam atau untuk melepasi pembolehubah persekitaran.
  9. Bagaimanakah saya menjalankan berbilang arahan dalam urutan?
  10. guna atau dalam perintah gelung atau rantai menggunakan paip dengan .
  11. Bagaimanakah saya boleh melaksanakan arahan yang memerlukan input pengguna?
  12. guna dengan dan berkomunikasi dengan proses menggunakan .
  13. Apa gunanya dalam pelaksanaan perintah?
  14. membantu menghuraikan arahan shell dengan betul, memastikan hujah dengan ruang dikendalikan dengan betul.
  15. Bagaimanakah saya menjalankan arahan di latar belakang?
  16. guna tanpa menunggu proses selesai, atau digunakan untuk menguruskan pelaksanaan latar belakang.

Teknik Lanjutan untuk Pelaksanaan Perintah Sistem

Satu lagi aspek dalam melaksanakan perintah sistem dalam Python melibatkan penggunaan modul untuk mengendalikan penghuraian arahan shell. Modul ini menyediakan cara untuk memisahkan arahan shell ke dalam format senarai, yang kemudiannya boleh dihantar ke fungsi. Ini memastikan bahawa hujah dengan ruang dikendalikan dengan betul. Selain itu, anda boleh menggunakan untuk mengarahkan input, output dan aliran ralat standard kepada proses induk, membolehkan komunikasi antara proses yang lebih kompleks.

Sebagai contoh, merantai perintah dan memproses keluarannya secara berurutan boleh dicapai dengan menyalurkan keluaran satu perintah ke yang lain menggunakan . Ini membolehkan anda mencipta urutan perintah yang berkuasa serupa dengan apa yang anda akan lakukan dalam skrip shell. Anda juga boleh menggunakan untuk menjalankan berbilang arahan subproses secara serentak, meningkatkan kecekapan skrip anda, terutamanya apabila menangani tugas terikat I/O.

Melaksanakan arahan luaran dalam Python ialah keupayaan serba boleh dan berkuasa yang boleh meningkatkan tugas skrip dan automasi anda dengan ketara. Dengan menggunakan modul, anda boleh menjalankan perintah shell, menangkap output mereka dan mengendalikan ralat dengan berkesan. The fungsi menyediakan alternatif yang lebih mudah untuk pelaksanaan perintah asas. Selain itu, menggabungkan modul memastikan penghuraian yang betul bagi perintah shell kompleks. Memahami teknik ini membolehkan anda memanfaatkan kekuatan Python sambil menggunakan potensi penuh alat baris arahan sistem pengendalian anda.