SORU
6 EKİM 2011, PERŞEMBE


'alt işlemi Popen arasındaki fark ne ve arama (bunları nasıl kullanabilirim)?

Python harici bir program aramak istiyorum. Popen() call() hem bunu kullandım.

İkisi arasındaki fark nedir?

Belirli bir amacım Python aşağıdaki komutu çalıştırmaktır. Yönlendirmeleri nasıl çalıştığını emin değilim.

./my_script.sh > output

the documentation call() kolaylık bir işlev veya bir kısayol işlevi olduğunu yazıyor. Popen() yerine call() kullanarak herhangi bir güç kaybederiz?

CEVAP
6 EKİM 2011, PERŞEMBE


Yönlendirme yapmak için iki yol vardır. Her ikisi de subprocess.Popen subprocess.call için geçerli.

  1. Anahtar kelime değişken shell = True executable = /path/to/the/shell * ve orada da dahil olmak üzere bütün komutunu belirtin.

  2. Sadece bir dosyaya çıktı yönlendirmek olduğuna göre, anahtar kelime durur

    stdout = an_open_writeable_file_object
    

    nesne output dosyasını işaret eder.

subprocess.Popen subprocess.call daha genel.

Popen, çalışırken süreç etkileşim sağlayan, blok, veya diğer şeyler ile devam programda yok. 20* *çağrı Popen bir nesne döndürür.

callyokblok. Hala süreci' çıkışı, çevre değişkenleri, vb ayarlayabilirsiniz Popen yapıcı olarak aynı argümanları destekler iken senaryonu programı tamamlamak için bekler, ve call döndürür bir kod işlemini temsil eden' çıkış durumu.

returncode = call(*args, **kwargs) 

temelde arama aynıdır

returncode = Popen(*args, **kwargs).wait()

call sadece kolaylık işlevidir. CPython içinde uygulanması subprocess.py

def call(*popenargs, timeout=None, **kwargs):
    """Run command with arguments.  Wait for command to complete or
    timeout, then return the returncode attribute.

    The arguments are the same as for the Popen constructor.  Example:

    retcode = call(["ls", "-l"])
    """
    with Popen(*popenargs, **kwargs) as p:
        try:
            return p.wait(timeout=timeout)
        except:
            p.kill()
            p.wait()
            raise

Gördüğünüz gibi, Popen etrafında ince bir sarıcı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Malwarebytes

    Malwarebytes

    22 Temmuz 2007
  • ThreadBanger

    ThreadBanger

    2 Mart 2007
  • Ty Moss

    Ty Moss

    20 Kasım 2007