@AlexAB87

Как выполнять команды в cmd из Python?

в cmd Надо запускать сервер MySQL80.
хочу делать это функцией в Python.
1) как правильно из Python выполнить команды в cmd?
Второй вопрос удален модератором
1) Нужно выполнение следующей команды в cmd (желатально еще от им. адиминистратора):
"net start MySQL80"

вот так команда выполняется
import subprocess

text = subprocess.check_output('ipconfig')
decoded = text.decode('cp866')
print(decoded)


Нужно выполнение следующей команды в cmd (желатально еще от им. адиминистратора):
"net start MySQL80"

все попытки выполнить завершаются ошибками и выводом с непонятной кодировкой
import subprocess
subprocess.run(["net start MySQL80"], stdout=subprocess.DEVNULL)


Traceback (most recent call last):
File "C:\Users\Acer\Documents\PythonProjects\SQL_Python\test.py", line 18, in
subprocess.run(["net start MySQL80"], stdout=subprocess.DEVNULL)
File "C:\Users\Acer\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 501, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\Acer\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 966, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\Acer\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1435, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Не удается найти указанный файл

или вот

import subprocess
text = subprocess.check_output("net start MySQL80")
decoded = text.decode('cp866')
print(decoded)


���⥬��� �訡�� 5.

�⪠���� � ����㯥.

Traceback (most recent call last):
File "C:\Users\Acer\Documents\PythonProjects\SQL_Python\test.py", line 13, in
text = subprocess.check_output("net start MySQL80")
File "C:\Users\Acer\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 420, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "C:\Users\Acer\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 524, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'net start MySQL80' returned non-zero exit status 2.

Process finished with exit code 1

Второй вопрос удален модератором
  • Вопрос задан
  • 1448 просмотров
Пригласить эксперта
Ответы на вопрос 1
@R0Zi
import subprocess

result = b''
process = subprocess.Popen(['cmd', '/C', command], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
if out:
    result += out.decode('cp866').encode('utf-8')
if err:
    result += err.decode('cp866').encode('utf-8')
print(result)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы