Python'da Harici Komutlar Nasıl Yürütülür

Python subprocess

Python'dan Sistem Komutlarını Çalıştırma

Python, harici programları ve sistem komutlarını doğrudan komut dosyalarınızdan yürütmek için güçlü yetenekler sağlar. Bu özellik, işletim sisteminizde mevcut olan çok çeşitli araçlardan yararlanırken Python'un basitliğinden yararlanmanıza olanak tanır.

İster tekrarlanan görevleri otomatikleştiriyor olun ister karmaşık iş akışlarını entegre ediyor olun, Python'da sistem komutlarının nasıl çağrılacağını anlamak üretkenliğinizi önemli ölçüde artırabilir. Bu kılavuzda bunu etkili bir şekilde başarmanın farklı yöntemlerini inceleyeceğiz.

Emretmek Tanım
subprocess.run Bir alt kabukta bir komutu yürütür. Çıktı ve hataları yakalayabilir.
subprocess.run([...], capture_output=True) Yürütülen komutun standart çıktısını ve standart hatasını yakalar.
subprocess.run([...], shell=True) Komutu kabuk üzerinden çalıştırarak joker karakterler gibi kabuk özelliklerine izin verir.
subprocess.Popen Bir komutu yeni bir süreçte yürütür ve yürütülmesi üzerinde daha fazla kontrol sağlar.
process.stdout.readline() Sürecin standart çıktısından bir çıktı satırı okur.
os.system Genellikle basit komut yürütme için kullanılan bir alt kabukta bir komutu yürütür.
subprocess.check_output Bir komutu çalıştırır ve çıktısını döndürür. Komut başarısız olursa bir özel durum oluşturur.
os.environ.copy() Geçerli ortam değişkenlerinin bir kopyasını oluşturarak değişikliklere izin verir.
env parameter in subprocess.run Yeni işlem için ortam değişkenlerini belirtir.

Python'da Komut Dosyası Yürütmeyi Anlamak

Sağlanan komut dosyaları Python kullanarak harici komutları yürütmenin çeşitli yollarını göstermektedir. command çok yönlüdür ve kabuk komutlarını doğrudan Python betiğinizden çalıştırmanıza olanak tanır. Örneğin, konsola bir mesaj yazdırırken çıktısını yakalar ls -l ayrıntılı bir dizin listesi görüntüleyen komut. Kullanma ile Joker karakter genişletme gibi kabuk özelliklerinin kullanılmasına izin vererek daha karmaşık komutlar için kullanışlı hale getirir.

komut, eşzamansız komut çalıştırmaya ve sürecin giriş ve çıkış akışlarıyla etkileşime izin vererek komut yürütme üzerinde daha fazla kontrol sağlar. Örneğin, komut dosyası örneği Yerel makineye sürekli olarak ping atıyor ve her çıktı satırını okuyor. Bunlara ek olarak, Basit komut yürütme için kullanılır ancak esneklikten yoksundur. subprocess. Ortam değişkenleri aşağıdakiler kullanılarak değiştirilebilir ve alt işleme aktarılabilir: ve parametre , ortama bağlı olarak dinamik komut yürütülmesine izin verir.

Python'da Harici Komutları Çalıştırmak

Python'un alt süreç modülünü kullanma

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())

Python ile Sistem Görevlerini Otomatikleştirme

os.system ve alt süreç modüllerini kullanma

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())

Sistem Komutlarının Yürütülmesi için Gelişmiş Teknikler

Python'da sistem komutlarını çalıştırmanın bir başka yönü de, Kabuk komut ayrıştırmasını gerçekleştirecek modül. Bu modül, kabuk komutlarını daha sonra aktarılabilecek bir liste formatına bölmenin bir yolunu sağlar. işlevler. Bu, boşluk içeren argümanların doğru şekilde ele alınmasını sağlar. Ek olarak şunları kullanabilirsiniz: standart girdi, çıktı ve hata akışlarını ana sürece yönlendirerek daha karmaşık süreçler arası iletişime olanak tanır.

Örneğin, komutların zincirlenmesi ve çıktılarının sırayla işlenmesi, bir komutun çıktısının diğerine aktarılmasıyla elde edilebilir. . Bu, bir kabuk betiğinde yaptığınıza benzer güçlü komut dizileri oluşturmanıza olanak tanır. Ayrıca kullanabilirsin birden fazla alt işlem komutunu aynı anda çalıştırmak, özellikle G/Ç bağlantılı görevlerle uğraşırken komut dosyanızın verimliliğini artırmak.

  1. Python'da bir kabuk komutunu nasıl çalıştırıp çıktısını nasıl alabilirim?
  2. Kullanmak ile komutun çıktısını yakalamak için.
  3. Arasındaki fark nedir Ve ?
  4. komutun tamamlanmasını bekleyen daha basit bir arayüzdür. komut yürütme üzerinde daha fazla kontrol sağlar ve eşzamansız çalışmaya izin verir.
  5. Bir sistem komutunu çalıştırırken hataları nasıl ele alabilirim?
  6. Kullanmak Ve ile bloklar hataları yakalamak ve işlemek için.
  7. Ortam değişkenlerini bir komuta iletebilir miyim?
  8. Evet, kullan parametre veya ortam değişkenlerini iletmek için.
  9. Birden fazla komutu sırayla nasıl çalıştırırım?
  10. Kullanmak veya boruları kullanan bir döngü veya zincir komutlarında .
  11. Kullanıcı girişi gerektiren bir komutu nasıl çalıştırabilirim?
  12. Kullanmak ile kullanarak süreçle iletişim kurun ve .
  13. Ne işe yarar komut yürütmede mi?
  14. kabuk komutlarının doğru şekilde ayrıştırılmasına yardımcı olarak boşluk içeren argümanların doğru şekilde işlenmesini sağlar.
  15. Arka planda bir komutu nasıl çalıştırırım?
  16. Kullanmak işlemin tamamlanmasını beklemeden veya kullanmayı beklemeden arka planda yürütmeyi yönetmek için.

Sistem Komutlarının Yürütülmesi için Gelişmiş Teknikler

Python'da sistem komutlarını çalıştırmanın bir başka yönü de, Kabuk komut ayrıştırmasını yönetecek modül. Bu modül, kabuk komutlarını daha sonra aktarılabilecek bir liste formatına bölmenin bir yolunu sağlar. işlevler. Bu, boşluk içeren argümanların doğru şekilde ele alınmasını sağlar. Ek olarak şunları kullanabilirsiniz: standart girdi, çıktı ve hata akışlarını ana sürece yönlendirerek daha karmaşık süreçler arası iletişime olanak tanır.

Örneğin, komutların zincirlenmesi ve çıktılarının sırayla işlenmesi, bir komutun çıktısının diğerine aktarılmasıyla elde edilebilir. . Bu, bir kabuk betiğinde yaptığınıza benzer güçlü komut dizileri oluşturmanıza olanak tanır. Ayrıca kullanabilirsin birden fazla alt işlem komutunu aynı anda çalıştırmak, özellikle G/Ç bağlantılı görevlerle uğraşırken komut dosyanızın verimliliğini artırmak.

Python'da harici komutları yürütmek, komut dosyası oluşturma ve otomasyon görevlerinizi önemli ölçüde geliştirebilecek çok yönlü ve güçlü bir özelliktir. kullanarak modülü kullanarak kabuk komutlarını çalıştırabilir, çıktılarını yakalayabilir ve hataları etkili bir şekilde yönetebilirsiniz. işlevi, temel komut yürütme için daha basit bir alternatif sağlar. Ek olarak, modül karmaşık kabuk komutlarının uygun şekilde ayrıştırılmasını sağlar. Bu teknikleri anlamak, işletim sisteminizin komut satırı araçlarının tüm potansiyelinden faydalanırken Python'un güçlü yönlerinden yararlanmanızı sağlar.