Ana içeriğe atla

Python Subprocess’a Giriş: Temeller ve Örnekler

Python'ın subprocess modülünü kullanarak harici komutları çalıştırmaya yönelik adım adım rehberimizi, örneklerle birlikte keşfedin.
Güncel 22 Nis 2026  · 15 dk. oku

Python subprocess modülünü, yeni süreçler (process) oluşturmak, bu süreçlerin girdilerine ve çıktılarının bağlanmak, dönüş kodlarını ve/veya çıktılarını almak için kullanabilirsiniz. Bu yazıda, subprocess modülünün temellerini; harici komutları nasıl çalıştıracağınızı, girdi ve çıktıyı nasıl yönlendireceğinizi ve hataları nasıl ele alacağınızı inceleyeceğiz. İster yeni başlıyor olun ister deneyimli bir Python geliştiricisi, bu eğitim, projelerinizde subprocess modülünü etkili biçimde kullanmanız için gerekli bilgi birikimini sağlayacaktır.

Python Subprocess nedir?

Python subprocess modülü, Python kodunuzdan başka programları veya komutları çalıştırmanıza olanak tanıyan bir araçtır. Yeni programlar açmak, onlara veri göndermek ve sonuçları geri almak için kullanılabilir.

Python subprocess modülünü kullanmak, komut istemine doğrudan yazmak yerine komutları Python ile bilgisayarınıza vermeye benzer. Bu modül, görevleri otomatikleştirmeyi ve diğer programları Python kodunuzla entegre etmeyi kolaylaştırır. Örneğin, subprocess modülünü kullanarak ls veya ping gibi bir kabuk komutunu çalıştırabilir ve bu komutun çıktısını Python kodunuzda elde edebilirsiniz. Ayrıca Windows üzerinde .exe dosyaları gibi diğer Python betiklerini veya çalıştırılabilir dosyaları da çalıştırabilirsiniz.

Buna ek olarak, subprocess modülü sürecin girdisini ve çıktısını yönlendirebilir; yani, sürece hangi verilerin gönderileceğini ve ondan hangi verilerin alınacağını kontrol edebilirsiniz.

Subprocess modülünün en kullanışlı yeteneklerinden biri, alt süreç tarafından üretilen girdileri, çıktıları ve hataları (genellikle stderr) yönetmenizi sağlamasıdır. check=True ile CalledProcessError yükseltilir ve e.stdout/e.stderr alanlarını inceleyebilirsiniz. Bu özellik, modülün en güçlü yönlerinden biri olarak kabul edilir. Bu sayede subprocess çağırma süreci daha güçlü ve esnek hale gelir. Örneğin, subprocess çıktısını Python betiğinizin geri kalanında bir değişken olarak kullanmanız artık mümkündür.

Python Subprocess ne zaman kullanılır

Python subprocess modülünü ne zaman kullanmanız gerektiğine bakalım.

Sistem görevlerini otomatikleştirme

Subprocess modülü; yedekleme çalıştırma, servis başlatma/durdurma ve cron işlerlerini zamanlama gibi çeşitli sistem görevlerini otomatikleştirmek için kullanılabilir. Örneğin, bir dosyanın yedeğini oluşturmak için cp komutunu çalıştırabilir veya systemctl (modern Linux) ya da service (eski sistemler) ile servisleri başlatıp durdurabilirsiniz. Ayrıca zamanlama araçlarını (Linux’ta cron veya Windows’ta Görev Zamanlayıcı gibi) subprocess ile tetikleyebilirsiniz; ancak zamanlamanın kendisi bu araçlar tarafından gerçekleştirilir, subprocess tarafından değil.

Komut satırı araçlarını çalıştırma

Subprocess modülü grep, sed ve awk gibi komut satırı araçlarını çalıştırmak ve çıktılarını Python kodunuzda işlemek için kullanılabilir. Örneğin, bir dosyada belirli bir deseni aramak için grep komutunu çalıştırabilir ve ardından çıktıyı Python kodunuzda işleyebilirsiniz. Bu, günlük analizi, veri işleme ve metin düzenleme gibi görevler için yararlı olabilir.

Harici çalıştırılabilir dosyaları çalıştırma

Subprocess modülü, Windows’taki .exe dosyaları gibi diğer çalıştırılabilir dosyaları çalıştırabilir ve davranışlarını kontrol edebilir. Örneğin, belirli bir görevi yapan bir çalıştırılabilir dosyayı çalıştırabilir ve ardından onun çıktısını kendi kodunuzda kullanabilirsiniz. Bu, görüntü işleme, veri analizi ve makine öğrenimi görevleri için faydalıdır.

Betikleri arka plan süreci olarak çalıştırma

Subprocess modülünü, ana program sonlandıktan sonra da çalışmaya devam edecek şekilde betikleri arka plan süreci olarak çalıştırmak için kullanabilirsiniz. Örneğin, belirli bir görevi yerine getiren bir betiği çalıştırıp, betiğin tamamlanmasını beklemeden ana programdan çıkabilirsiniz. Bu, izleme, günlükleme ve veri toplama gibi işler için kullanışlıdır.

Python dışı yorumlayıcılarla betik çalıştırma

Subprocess modülü, Perl, Ruby ve Bash gibi diğer dillerde yazılmış betikleri çalıştırmanıza yardımcı olabilir. Örneğin, belirli bir görevi gerçekleştiren bir Perl betiğini çalıştırabilir ve onun çıktısını kendi kodunuzda kullanabilirsiniz. Bu, veri işleme, metin düzenleme ve sistem yönetimi için yararlı olabilir.

Paralel işlem

Subprocess modülü birden fazla süreci paralel olarak çalıştırmak için kullanılabilir; bu da görüntü işleme, veri analizi ve makine öğrenimi gibi görevler için faydalıdır. Örneğin, aynı betiğin birden çok örneğini, her biri verinin farklı bir bölümünü işleyecek şekilde çalıştırabilir ve ardından sonuçları birleştirebilirsiniz.

Bu eğitimdeki kodu çevrimiçi olarak çalıştırın ve düzenleyin

Kodu çalıştır

Python Subprocess Örnekleri 

Şimdi bazı Python subprocess örneklerine bakalım.

python subprocess run

subprocess.run() metodu, bir alt süreci çalıştırıp tamamlanmasını beklemek için kullanışlı bir yoldur. Çalıştırılacak komutu seçmenize ve argümanlar, ortam değişkenleri ve girdi/çıktı yönlendirmeleri gibi seçenekler eklemenize olanak tanır. Alt süreç başlatıldıktan sonra run() metodu, süreç tamamlanana kadar bloklar ve alt sürecin dönüş kodu ile çıktısını içeren bir CompletedProcess nesnesi döndürür.

subprocess.run() metodu çeşitli argümanlar alır; bunlardan bazıları şunlardır:

  • args: Çalıştırılacak komut ve argümanları; string listesi olarak geçilir.

  • capture_output: True olarak ayarlanırsa standart çıktı ve standart hata yakalanır.

  • text: True olarak ayarlanırsa stdout ve stderr string olarak döner; aksi halde bytes döner.

  • check: Alt sürecin dönüş kodunun kontrol edilip edilmeyeceğini belirten boolean. check true ise ve dönüş kodu sıfır değilse CalledProcessError yükseltilir.

  • timeout: Zaman aşımı öncesinde alt sürecin tamamlanması için beklenecek süre (saniye cinsinden).

  • shell: Komutun bir kabuk içinde çalıştırılıp çalıştırılmayacağını belirten boolean. Bu, komutun string olarak geçirildiği ve joker karakter genişletme, değişken yerleştirme gibi kabuğa özgü özelliklerin kullanılabildiği anlamına gelir.

subprocess.run() metodu ayrıca aşağıdaki özniteliklere sahip bir CompletedProcess nesnesi döndürür:

  • args: Çalıştırılan komut ve argümanlar.

  • returncode: Alt sürecin dönüş kodu.

  • stdout: Alt sürecin standart çıktısı (text=True ise string, aksi halde bytes).

  • stderr: Alt sürecin standart hatası (text=True ise string, aksi halde bytes).

Örnek 1: Kabuk komutlarını çalıştırma:

import subprocess

result = subprocess.run("dir", shell=True, capture_output=True, text=True)

print(result.stdout)

Çıktı

Volume in drive C has no label.

Volume Serial Number is E414-A41C

 Directory of C:\Users\owner

01/25/2023  10:56 AM    <DIR>          .

01/25/2023  10:56 AM    <DIR>          ..

07/19/2021  01:19 PM    <DIR>          .anaconda

07/19/2021  01:19 PM    <DIR>          .astropy

07/19/2021  01:19 PM    <DIR>          .aws

09/12/2022  08:48 AM               496 .bash_history

03/27/2022  03:08 PM    <DIR>          .cache

09/26/2021  06:58 AM    <DIR>          .conda

09/26/2021  06:59 AM                25 .condarc

…

Linux/macOS için şunu kullanın: result = subprocess.run(["ls", "-la"], capture_output=True, text=True) (shell argümanı gerekmez).

Örnek 2: Python betiklerini çalıştırma:

subprocess.run() metodunu kullanarak bir Python betiği de çalıştırabilirsiniz. .py dosyasında basit bir Python betiği oluşturarak başlayalım

print(“This is the output from subprocess module”)

Bu dosyayı my_python_file.py olarak kaydedin. Şimdi bu dosyayı çalıştırmak için subprocess modülünü kullanabilirsiniz:

import subprocess
import sys

result = subprocess.run([sys.executable, "my_python_file.py"], capture_output=True, text=True)

print(result.stdout)

Çıktı:

This is the output from subprocess module

Örnek 3: Python kodunu doğrudan bir fonksiyondan çalıştırma:

Basit kullanım senaryolarında, subprocess.run() fonksiyonuna doğrudan bir Python komutu geçebilirsiniz. İşte nasıl yapılacağı:

result = subprocess.run([sys.executable, "-c", "print('This is directly from a subprocess.run() function')"], capture_output = True, text = True)

print(result.stdout)

Çıktı:

This is directly from a subprocess.run() function

args listesinde ilk öğe olan sys.executable, geçerli Python yorumlayıcısının yolunu dinamik olarak çözümler. Bu, çalışan süreçle tutarlılık sağlar ve "C:/..." gibi sabit yolları kullanma ihtiyacını ortadan kaldırır. İkinci öğe "-c", bir betik yerine sonraki string’in Python kodu olarak çalıştırılmasını sağlar. sys.executable’a erişmek için daima import sys ekleyin.

Örnek 4: check argümanını kullanma

check argümanı, Python subprocess modülündeki subprocess.run() fonksiyonunun isteğe bağlı bir argümanıdır. Çalıştırılan komutun dönüş kodunun kontrol edilip edilmeyeceğini belirleyen bir boole değeridir.

check True olarak ayarlandığında, fonksiyon komutun dönüş kodunu kontrol eder ve dönüş kodu sıfır değilse bir CalledProcessError istisnası yükseltir. İstisna, dönüş kodu, stdout, stderr ve command özniteliklerine sahip olur.

check False (varsayılan) olarak ayarlandığında, fonksiyon dönüş kodunu kontrol etmez ve komut başarısız olsa bile istisna yükseltmez.

import subprocess

result = subprocess.run(["python", "file_donot_exist.py"], capture_output=True, text=True, check=True)

print(result.stdout)

print(result.stderr)

Çıktı:

---------------------------------------------------------------------------

CalledProcessError                        Traceback (most recent call last)

<ipython-input-81-503b60184db8> in <module>

      1 import subprocess

----> 2 result = subprocess.run(["python", "file_donot_exist.py"], capture_output=True, text=True, check=True)

      3 print(result.stdout)

      4 print(result.stderr)

~\anaconda3\lib\subprocess.py in run(input, capture_output, timeout, check, *popenargs, **kwargs)

    514         retcode = process.poll()

    515         if check and retcode:

--> 516             raise CalledProcessError(retcode, process.args,

    517                                      output=stdout, stderr=stderr)

    518     return CompletedProcess(process.args, retcode, stdout, stderr)

CalledProcessError: Command '['python', 'file_donot_exist.py']' returned non-zero exit status 2.

Komutun, file_donot_exist.py mevcut olmadığından başarısız olduğuna dikkat edin. check=True ayarladığınızda süreciniz başarısız olur; buna karşılık, check=False iken süreç başarısız olmaz, bunun yerine hata mesajını stdout’ta alırsınız. 

import subprocess

result = subprocess.run(["python", "my_python_file2.py"], capture_output=True, text=True, check=False)

print(result.stdout)

print(result.stderr)

Çıktı:

python: can't open file 'my_python_file2.py': [Errno 2] No such file or directory

python subprocess Popen

subprocess.Popen(), alt süreçleri çalıştırmak için daha düşük seviyeli bir arabirimdir; subprocess.run ise kullanım kolaylığı için tasarlanmış, Popen üzerine kurulmuş daha yüksek seviyeli bir sarmalayıcıdır.

Popen, yeni bir süreç başlatmanıza ve onun standart girdi, çıktı ve hata akışlarıyla etkileşim kurmanıza olanak tanır. Süreç tamamlanana kadar beklemek, dönüş kodunu kontrol etmek veya süreci sonlandırmak için kullanılabilecek, çalışan sürecin bir tanıtıcısını döndürür.

run(), bir komutu tek çağrıda çalıştırıp çıktısını yakalamanızı sağlayan daha kullanışlı bir fonksiyondur; böylece bir Popen nesnesi oluşturup akışları kendiniz yönetmeniz gerekmez. Ayrıca komutun nasıl çalıştırılacağına dair çeşitli seçenekler belirtmenize olanak tanır; örneğin komut başarısız olursa istisna yükseltilip yükseltilmeyeceği gibi.

Genel olarak, yalnızca bir komutu çalıştırıp çıktısını yakalamanız gerekiyorsa run() kullanın; giriş/çıkış akışlarıyla etkileşim gibi süreç üzerinde daha fazla denetime ihtiyaç duyuyorsanız Popen tercih edin.

Popen sınıfı, çalıştırılacak komutu belirleyen args ve stdin, stdout, stderr, shell, cwd ve env gibi diğer isteğe bağlı argümanlar dahil olmak üzere run() ile aynı argümanları alır. Ayrıca Popen sınıfının, süreçle etkileşim kurmanızı sağlayan communicate(), poll(), wait(), terminate() ve kill() gibi çeşitli metotları vardır.

import subprocess

p = subprocess.Popen(["python", "--help"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

output, errors = p.communicate()

print(output)

Çıktı:

usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...

Options and arguments (and corresponding environment variables):

-b     : issue warnings about str(bytes_instance), str(bytearray_instance)

         and comparing bytes/bytearray with str. (-bb: issue errors)

-B     : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x

-c cmd : program passed in as string (terminates option list)

-d     : debug output from parser; also PYTHONDEBUG=x

-E     : ignore PYTHON* environment variables (such as PYTHONPATH)

…

Bu, python –help komutunu çalıştırır ve Popen türünde yeni bir nesne oluşturur; bu nesne p değişkeninde saklanır. Komutun standart çıktısı ve hatası communicate() yöntemiyle yakalanır ve sırasıyla output ve errors değişkenlerinde tutulur.

subprocess.Popen, sürece girdi göndermek, ondan çıktı almak veya tamamlanmasını beklemek gibi süreç üzerinde daha fazla kontrol istediğinizde kullanışlıdır.

python subprocess call

subprocess.call(), Python subprocess modülünde bir komutu ayrı bir süreçte çalıştırıp tamamlanmasını beklemek için kullanılan bir fonksiyondur. Komutun dönüş kodunu döndürür; komut başarılıysa sıfır, başarısızsa sıfır olmayan bir değer döner.

call() fonksiyonu, çalıştırılacak komutu belirleyen args ve stdin, stdout, stderr, shell, cwd ve env gibi diğer isteğe bağlı argümanlar dahil olmak üzere run() ile aynı argümanları alır.

Komutun standart çıktısı ve hatası, stdout ve stderr argümanlarıyla yönlendirilmediği sürece, ebeveyn sürecin stdout ve stderr’ine gönderilir.

import sys  
import subprocess  


return_code = subprocess.run([sys.executable, "--version"]).returncode  


if return_code == 0:  
    print("Command executed successfully.")  
else:  
    print("Command failed with return code", return_code)

Çıktı:

Command executed successfully.

Bu, python -–version komutunu ayrı bir süreçte çalıştırır ve tamamlanmasını bekler. Komutun dönüş kodu, başarılıysa sıfır, başarısızsa sıfır olmayan bir değer olacak şekilde return_code değişkeninde saklanır.

subprocess.call(), bir komutu çalıştırıp dönüş kodunu kontrol etmek istediğiniz ancak çıktıyı yakalamanız gerekmediği durumlarda kullanışlıdır.

python subprocess check_output

check_output, run()’a benzer bir subprocess fonksiyonudur; ancak yalnızca komutun standart çıktısını döndürür ve dönüş kodu sıfır değilse CalledProcessError istisnası yükseltir.

check_output() fonksiyonu, run() ile aynı argümanları alır; çalıştırılacak komutu belirleyen args ve stdin, stderr, shell, cwd ve env gibi isteğe bağlı argümanlar dahil. Komutun standart çıktısını bytes nesnesi olarak veya (text=True ise) string olarak döndürür. Komut başarısız olursa (sıfır olmayan çıkış durumu) CalledProcessError yükseltir.

Not: Varsayılan olarak check_output() sadece stdout’u yakalar. stderr’i de çıktıya dahil etmek için açıkça stderr=subprocess.STDOUT kullanarak yönlendirin.

import subprocess
import sys

try:

    output = subprocess.check_output([sys.executable, "--version"], text=True)

    print(output)

except subprocess.CalledProcessError as e:

    print(f"Command failed with return code {e.returncode}")

Çıktı:

Python 3.8.8

Python Subprocess Pipe

Python subprocess modülü, başka programları veya komutları çalıştırmak için kullanılabilecek alt süreçler oluşturma ve onlarla etkileşim kurma imkanı sağlar. Subprocess modülünün özelliklerinden biri de ebeveyn ve alt süreçler arasında iletişime olanak tanıyan pipe’lar (boru hatları) oluşturmaktır.

Pipe, tek yönlü bir iletişim kanalıdır; bir sürecin standart çıktısını diğerinin standart girdisine bağlar. Bir komutun çıktısını başka bir komutun girdisine bağlayarak ilk komutun çıktısının ikinci komut için girdi olarak kullanılmasını sağlar.

Pipe’lar, Popen sınıfında stdout veya stdin argümanı subprocess.PIPE olarak belirtilerek oluşturulabilir.

Örneğin, aşağıdaki kod, ls komutunun çıktısını grep komutunun girdisine bağlayan bir pipe oluşturur; bu da çıktıyı "file" kelimesini içeren satırlarla sınırlayarak filtreler:

import subprocess


ls_process = subprocess.Popen(["ls"], stdout=subprocess.PIPE, text=True)
grep_process = subprocess.Popen(
    ["grep", "sample"],
    stdin=ls_process.stdout,
    stdout=subprocess.PIPE,
    text=True
)
ls_process.stdout.close()  # POSIX-only: prevents deadlocks by closing the pipe
output, error = grep_process.communicate()


print(output)
print(error)

Çıktı:

sample_data

Bu örnekte, Popen sınıfı ls komutu için bir, grep komutu için bir olmak üzere iki alt süreç oluşturmak için kullanılır. ls komutunun stdout’u, iki süreç arasında bir pipe oluşturan subprocess.PIPE kullanılarak grep komutunun stdin’ine bağlanır. communicate() yöntemi, ls komutunun çıktısını grep komutuna göndermek ve filtrelenmiş çıktıyı almak için kullanılır.

Sonuç

Python subprocess modülü, başka programları çalıştırmanıza veya Python betiğiniz içinden komutlar vermenize olanak tanıyan, alt süreçler oluşturmak ve onlarla etkileşim kurmak için güçlü ve esnek bir yol sağlar. subprocess.call() gibi basit komutlardan pipe’lar, girdi/çıktı yönlendirme ve ortam değişkenleri geçirme gibi gelişmiş özelliklere kadar subprocess modülü, hemen her kullanım durumu için bir şey sunar. Tekrarlayan görevleri otomatikleştirmek, sistem komutları çalıştırmak ve hatta diğer programlama dilleri ve platformlarla etkileşim kurmak için harika bir yöntemdir.

Subprocess modülüyle çalışırken, harici komutları çalıştırmanın özellikle shell=True parametresi kullanıldığında veya temizlenmemiş girdi geçirildiğinde güvenlik riski oluşturduğunu unutmayın. Komutun nasıl çalıştırılacağına dair çeşitli seçenekler belirtmenize olanak tanıyan subprocess.run() fonksiyonunu kullanmak; örneğin komut başarısız olursa istisna yükseltmek gibi; her zaman iyi bir uygulamadır. 

Python ile komut satırı otomasyonunun sınırsız olasılıklarına derinlemesine dalmak isterseniz, Command Line Automation in Python kursumuza göz atın. Bu kursta, bir dosya sisteminde gezinip belirli bir deseni izleyen dosyaları arayan ve ardından çeşitli durumlarda dosyaların yinelenip yinelenmediğini belirleyen otomasyon kodu yazmayı öğreneceksiniz. Kursu tamamladıktan sonra Unix süreçlerini yönetebilecek ve onlarla etkileşim kurabilecek, ayrıca çok çeşitli rutin dosya sistemi etkinliklerini otomatikleştirebileceksiniz. 

DataCamp for Business ile Ekibinizin Python Becerilerini Geliştirin

Siz veya ekibiniz Python ve komut satırı otomasyonu konusunda becerilerinizi geliştirmek istiyorsanız DataCamp for Business’ı keşfetmeyi düşünün. DataCamp, her ölçekten ekip için uyarlanmış öğrenme çözümleri sunarak işletmelerin hızla değişen teknoloji dünyasında önde kalmasına yardımcı olur. DataCamp for Business ile ekibinizi Python, otomasyon ve diğer temel veri bilimi araçlarında uzmanlık kazandıracak kurslar ve özel öğrenme yollarıyla geliştirebilirsiniz. İster bir girişim ister kurumsal ölçekte olun, DataCamp for Business ekibinizin öğrenme hedeflerine ulaşması için gereken kaynakları ve esnekliği sağlar. Daha fazla bilgi almak için bugün bir demo talep edin

Python Subprocess SSS

subprocess.call() ile subprocess.run() arasındaki fark nedir?

subprocess.call(), bir komutu çalıştırıp tamamlanmasını bekleyen ve komutun dönüş kodunu döndüren bir fonksiyondur. subprocess.run() ise daha güçlüdür; bir komutu çalıştırmanıza, çıktısını yakalamanıza ve komutun başarısız olması durumunda istisna yükseltilip yükseltilmeyeceği gibi komutun nasıl çalıştırılacağına dair çeşitli seçenekler belirtmenize olanak tanır.

subprocess kullanarak Python’da bir komutu nasıl çalıştırır ve çıktısını nasıl yakalarım?

Bir komutu tek çağrıda çalıştırıp çıktısını yakalamak için subprocess.run() fonksiyonunu kullanabilirsiniz. Örneğin, aşağıdaki kod ls komutunu çalıştırır ve çıktısını result değişkeninde yakalar:

import subprocess

result = subprocess.run(["ls"], stdout=subprocess.PIPE)

print(result.stdout.decode())

Bir alt süreçte bir komuta değişkenleri argüman olarak nasıl aktarabilirim?

Subprocess içinde bir komuta değişkenleri argüman olarak, subprocess.run() veya subprocess.Popen() fonksiyonlarına geçirilen listede dahil ederek aktarabilirsiniz. Örneğin, aşağıdaki kod echo komutunu çalıştırır ve message değerini argüman olarak geçirir:

import subprocess

message = "Hello, World!"

subprocess.run(["echo", message])

Bir komutun çıktısını subprocess kullanarak nasıl bir dosyaya yönlendiririm?

Bir komutun çıktısını bir dosyaya yönlendirmek için komutta > operatörünü kullanabilirsiniz. Örneğin, aşağıdaki kod ls komutunu çalıştırır ve çıktısını ls.txt adlı dosyaya yönlendirir:

import subprocess

subprocess.run("ls > ls.txt", shell=True)

Subprocess kullanarak bir komutu arka planda nasıl çalıştırırım?

Yeni bir süreç oluştururken subprocess.Popen() ile start_new_session parametresini True yaparak bir komutu arka planda çalıştırabilirsiniz. Bu, komutu arka planda çalıştırmanıza olanak tanıyan yeni bir süreç grubu oluşturur.

import subprocess

subprocess.Popen(["ls"], start_new_session=True)

Subprocess ile çalıştırılan bir komutun dönüş kodunu nasıl kontrol ederim?

Bir komutun dönüş kodunu, subprocess.run() tarafından döndürülen subprocess.CompletedProcess nesnesinin returncode özniteliğine erişerek kontrol edebilirsiniz. Örneğin, aşağıdaki kod ls komutunu çalıştırır ve dönüş kodunu kontrol eder:

import subprocess

result = subprocess.run(["ls"])

if result.returncode == 0:

    print("Command ran successfully")

else:

    print("Command failed with error code", result.returncode)

Subprocess ile çalıştırılan bir komuta ortam değişkenlerini nasıl aktarırım?

Bir komuta ortam değişkenleri, bir sözlükte tanımlanıp subprocess.Popen() veya subprocess.run() ile yeni bir süreç oluştururken env parametresi olarak geçirilerek verilebilir. Örneğin, aşağıdaki kod TEST_VAR ortam değişkenini ayarlar ve printenv komutunu çalıştırır:

import subprocess

env = {'TEST_VAR': 'test_value'}

subprocess.run(["printenv", "TEST_VAR"], env=env)

Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Veri Bilimci, PyCaret'in Kurucusu ve Yaratıcısı

Konular
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

Devamını GörDevamını Gör