Yanıtlar:
Bunu yapmanın birkaç yolu vardır:
İşletim sistemi modülünü kullanmanın basit bir yolu:
import os
os.system("ls -l")
Alt süreç modülü ile daha karmaşık şeyler başarılabilir: örneğin:
import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
os.system("nslookup gmail.com")yalnızca son satırı döndürür 0, ancak tam yanıtı almak istiyorum.
Alt işlem modülünün kullanılmasını tercih ediyorum:
from subprocess import call
call(["ls", "-l"])
Nedeni, eğer betikte bir değişken geçirmek istiyorsanız, bu çok kolay bir yol sağlar, örneğin kodun aşağıdaki bölümünü alın
abc = a.c
call(["vim", abc])
call(["eog", "1breeproposal.png", "-f"])
Aslında, alt süreçle ilgili herhangi bir soru iyi bir okuma olacaktır
Ayrıca commands.getstatusoutput'a da bakmalısınız.
Bu, uzunluğu 2 olan bir demet döndürür. Birincisi, dönüş tamsayısıdır (0 - komutlar başarılı olduğunda), ikincisi, terminalde gösterileceği gibi çıktının tamamıdır.
Ls için
import commands
s=commands.getstatusoutput('ls')
print s
>> (0, 'file_1\nfile_2\nfile_3')
s[1].split("\n")
>> ['file_1', 'file_2', 'file_3']
import os
os.system("echo 'hello world'")
Bu çalışmalı. Çıktıyı python Kabuğuna nasıl yazdıracağımı bilmiyorum.
Os.popen () oldukça basit kullanımıyla, ancak Python 2.6 beri kaldırılmıştır. Alt süreci kullanmalısınız yerine modülünü kullanmalısınız.
Burayı okuyun: bir os.popen (komut) dizgesine okuma
Bir jupyter not defterinde sihirli işlevi kullanabilirsiniz !
!echo "execute a command"
files = !ls -a /data/dir/ #get the output into a variable
Bunu bir .pykomut dosyası olarak yürütmek için kullanmanız gerekiripython
files = get_ipython().getoutput('ls -a /data/dir/')
betiği çalıştır
$ ipython my_script.py
'Os' modülünü içe aktarabilir ve şu şekilde kullanabilirsiniz:
import os
os.system('#DesiredAction')
python3 için alt işlemi kullanın
import subprocess
s = subprocess.getstatusoutput(f'ps -ef | grep python3')
print(s)