Uruchamianie poleceń powłoki windows z Pythonem
Jak możemy współdziałać z powłoką OS używając Pythona ? Chcę uruchomić polecenia cmd systemu Windows przez python. Jak można to osiągnąć ?
5 answers
Nowsze subprocess.check_output
i podobne komendy mają zastąpić os.system
. Zobacz ta strona po szczegóły. Chociaż nie mogę tego przetestować w systemie Windows, powinno działać:
from subprocess import check_output
check_output("dir C:", shell=True)
check_output
zwraca ciąg wyjścia z polecenia. Alternatywnie, subprocess.call
po prostu uruchamia polecenie i zwraca status polecenia (Zwykle 0, jeśli wszystko jest w porządku).
Zauważ również, że w Pythonie 3, to wyjście łańcuchowe jest teraz bytes
output. Jeśli chcesz zmienić to na ciąg, możesz need something like
from subprocess import check_output
check_output("dir C:", shell=True).decode()
Jeśli to konieczne, możesz powiedzieć rodzaj kodowania wyjść programu. Domyślnie jest to utf-8
, które zazwyczaj działa dobrze, ale inne standardowe opcje to tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 05:06:06
Można użyć modułu systemu operacyjnego Metoda systemowa .
Wystarczy umieścić w postaci ciągu poleceń, zwracaną wartością jest zmienna enrivonment systemu Windows COMSPEC
Na przykład:
Os.system ('python') otwiera wiersz poleceń systemu windows i uruchamia interpreter Pythona
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-15 15:24:24
Refaktoryzacja odpowiedzi @ srini-beerge, która pobiera wyjście i Kod powrotu
import subprocess
def run_win_cmd(cmd):
result = []
process = subprocess.Popen(cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
for line in process.stdout:
result.append(line)
errcode = process.returncode
for line in result:
print(line)
if errcode is not None:
raise Exception('cmd %s failed, see above for details', cmd)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-09 20:00:58
import subprocess
result = []
win_cmd = 'ipconfig'(curr_user,filename,ip_address)
process = subprocess.Popen(win_cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
for line in process.stdout:
print line
result.append(line)
errcode = process.returncode
for line in result:
print line
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 10:52:13
Możesz użyć subprocess
pakietu z kodem jak poniżej:
import subprocess
cmdCommand = "python test.py" #specify your cmd command
process = subprocess.Popen(cmdCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print output
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-24 06:39:17