Python Subprocess.check_output () и call () не будут правильно выполнять команды (Windows 10) - PullRequest
0 голосов
/ 11 апреля 2020

Итак, я сейчас пытаюсь запустить скрипт python, который вызовет командную строку для компиляции (MinGW) скрипта. cpp, а затем запустит исполняемый файл. Вот .py:

import time
import subprocess
from subprocess import Popen, PIPE, check_output

# Start the clock again
tic2 = time.time()

try:
    # This is Python's way of calling the command line. We use it to compile the C++ files.
    subprocess.check_output(["g++ BubbleSort.cpp"],stdin=None,stderr=subprocess.STDOUT,shell=True)
except subprocess.CalledProcessError as e:
    # There were compiler errors in BubbleSort.cpp. Print out the error message and exit the program.
    print("<p>",e.output,"</p>")
    raise SystemExit

p = Popen(['./a.exe'], shell=True, stdout=PIPE, stdin=PIPE)
print(p.stdout.read())

# End clock
toc2 = time.time()
print("C++ Bubble Sort finished in %0.6f seconds" % (toc2 - tic2))

Однако каждый раз, когда я запускаю этот скрипт через CLI (я использую PowerShell), я получаю следующий вывод:

<p> b'\'"g++ BubbleSort.cpp"\' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n' </p>

This происходит только при использовании скрипта python. Мой PATH настроен правильно, так как команды работают нормально при вызове их только через CLI. Любая помощь или понимание будет принята с благодарностью.

...