«subprocess» etiketlenmiş sorular

Python alt işlem modülü, yeni süreçler oluşturmanıza, giriş / çıkış / hata hatlarına bağlanmanıza ve dönüş kodlarını almanıza olanak tanır. Python'da bir kabuk komutu veya çalıştırılabilir bir dosya çalıştırmak için kullanın.


16
Kabuk komutunu çalıştırma ve çıktıyı yakalama
Bir kabuk komutu yürütecek ve çıktısını bir dize olarak döndürecek bir işlev yazmak istiyorum , ne olursa olsun, bir hata veya başarı mesajı. Komut satırı ile elde ettiğim sonucun aynısını almak istiyorum. Böyle bir şey yapacak bir kod örneği ne olurdu? Örneğin: def run_command(cmd): # ?????? print run_command('mysqladmin create test …
908 python  shell  subprocess 

30
Bir alt işlemde engellemeyen okuma. Python'da boru
Bir alt süreci başlatmak ve çıkış akışına (stdout) bağlanmak için alt işlem modülünü kullanıyorum . Stdout'unda tıkanmasız okumalar yapabilmek istiyorum. .Readline'ı engellememenin veya yayınlamadan önce akışta veri olup olmadığını kontrol etmenin bir yolu var mı .readline? Bunun taşınabilir olmasını veya en azından Windows ve Linux altında çalışmasını istiyorum. İşte nasıl …

29
'Alt süreç' modülünü zaman aşımı ile kullanma
На этот вопрос есть ответы на yığın taşması на русском : Прерывание процесса и задержка на исполнение stdoutVerilerini döndüren rasgele bir komut çalıştırmak veya sıfır olmayan çıkış kodlarında bir istisna oluşturmak için Python kodu : proc = subprocess.Popen( cmd, stderr=subprocess.STDOUT, # Merge stdout and stderr stdout=subprocess.PIPE, shell=True) communicate işlemin çıkmasını …

11
Shell = True ile başlatılan bir python alt işlemini sonlandırma
Aşağıdaki komutla bir alt işlem başlatıyorum: p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) Ancak, kullanarak öldürmeye çalıştığınızda: p.terminate() veya p.kill() Komut arka planda çalışmaya devam ediyor, bu yüzden süreci nasıl sonlandırabileceğimi merak ediyordum. Komutu ile çalıştırdığımda: p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) p.terminate(). Verilirken başarıyla sonlandırılır .

15
Bir alt dizede çağrıyı aç
Python bir sistem çağrısı yapmak ve Python programında manipüle edebilir bir dizeye çıktı depolamak çalışıyorum. #!/usr/bin/python import subprocess p2 = subprocess.Popen("ntpq -p") Buradaki bazı önerileri içeren birkaç şeyi denedim: Subprocess.call () çıktısını alma ama şanssız.
301 python  subprocess 

8
Python alt süreci / Değiştirilmiş bir ortamla pop
Harici bir komutun biraz değiştirilmiş bir ortamla çalıştırılmasının çok yaygın bir durum olduğuna inanıyorum. Bunu şu şekilde yapmaya eğilimliyim: import subprocess, os my_env = os.environ my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"] subprocess.Popen(my_command, env=my_env) Daha iyi bir yol olduğuna dair bir his var; iyi görünüyor mu?
285 python  subprocess  popen 

5
Python 2.7'de alt işlem çıktısı nasıl gizlenir
Ubuntu üzerinde eSpeak kullanıyorum ve bir mesaj yazıp söyleyen bir Python 2.7 betiği var: import subprocess text = 'Hello World.' print text subprocess.call(['espeak', text]) eSpeak istenen sesleri üretir, ancak bazı hatalarla (ALSA lib ..., soket bağlantısı yok) kabukları keser, böylece daha önce basılanları kolayca okuyamam. Çıkış kodu 0. Ne yazık …

11
Bir dizeyi alt işlemeye nasıl geçiririm.Popen (stdin bağımsız değişkenini kullanarak)?
Aşağıdakileri yaparsam: import subprocess from cStringIO import StringIO subprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one\ntwo\nthree\nfour\nfive\nsix\n')).communicate()[0] Alırım: Traceback (most recent call last): File "<stdin>", line 1, in ? File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 533, in __init__ (p2cread, p2cwrite, File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 830, in _get_handles p2cread = stdin.fileno() AttributeError: 'cStringIO.StringI' object has no attribute 'fileno' Görünüşe göre bir cStringIO.StringIO nesnesi, …
280 python  subprocess  stdin 

5
Alt işlemde 'shell = True' ifadesinin gerçek anlamı
subprocessModül ile farklı süreçler arıyorum . Ancak bir sorum var. Aşağıdaki kodlarda: callProcess = subprocess.Popen(['ls', '-l'], shell=True) ve callProcess = subprocess.Popen(['ls', '-l']) # without shell Her ikisi de çalışır. Dokümanları okuduktan sonra shell=True, kodun kabuktan yürütülmesi anlamına geldiğini öğrendim . Yani bu yokluğunda, sürecin doğrudan başlatıldığı anlamına gelir. Benim durumum …
260 python  subprocess 


9
alt işlem stdout'unu satır satır oku
Python betiğim, çok gürültülü bir linux yardımcı programını çağırmak için alt süreci kullanır. Tüm çıktıları bir günlük dosyasına kaydetmek ve bir kısmını kullanıcıya göstermek istiyorum. Aşağıdakilerin işe yarayacağını düşündüm, ancak yardımcı program önemli miktarda çıktı üretene kadar çıktı uygulamamda görünmüyor. #fake_utility.py, just generates lots of output over time import time …
235 python  subprocess 

13
İşlem devam ederken alt süreç çıktısını sürekli yazdırın
Python betiklerimden program başlatmak için aşağıdaki yöntemi kullanıyorum: def execute(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = process.communicate()[0] exitCode = process.returncode if (exitCode == 0): return output else: raise ProcessException(command, exitCode, output) Yani bir işlemi başlattığımda Process.execute("mvn clean install"), programım işlem bitene kadar bekler ve ancak o zaman programımın …
204 python  subprocess 

1
Popen için çalışma dizinini nasıl belirtebilirim
Python'larda komutun çalışan dizinini belirtmenin bir yolu var subprocess.Popen()mı? Örneğin: Popen('c:\mytool\tool.exe', workingdir='d:\test\local') Python betiğim C:\programs\python Is çalıştırmak mümkündür C:\mytool\tool.exedizinde D:\test\local? Bir alt işlem için çalışma dizinini nasıl ayarlarım?
187 python  subprocess  popen 

15
alt işlem komutundan canlı çıktı
Hidrodinamik kod için bir sürücü olarak bir python komut dosyası kullanıyorum. Simülasyonu çalıştırmak için zaman geldiğinde subprocess.Popen, kodu çalıştırmak, stdout ve stderr'den çıktıyı bir subprocess.PIPE--- içine toplamak için çıktı bilgisini yazdırabilirim (ve bir günlük dosyasına kaydedebilirim) ve herhangi bir hatayı kontrol edebilirim . Sorun, kodun nasıl ilerlediğine dair hiçbir fikrim …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.