Вызов программы командной строки с использованием подпроцесса без загромождения консоли с оболочкой, возможно?
У меня возникли проблемы с запуском подпроцесса в Python 3, чтобы пользователь handbrakeCLI для извлечения видео определенной длины в новый файл. Сам код прекрасно работает, но выводит вывод на консоль. Мне не нужно видеть сотни строк кодирования информации.
Из моего ограниченного знания этого модуля, shell=True - опция, которая печатает на консоль. Удалите его или измените на =False, и это не удастся с помощью "[WinError2] Система не может найти указанный файл"
Это выполняется внутри программы tkinter, но не имеет доступа к чему-либо вне себя, так что это весь код, который выводит вывод на консоль.
filepath = askopenfilename()
filepathSplit = filepath.split("/")
location = "\\".join(filepathSplit[:-1]) + "\\"
inputFileName = os.path.splitext(filepathSplit[len(filepathSplit)-1])[0]
inputFileType = os.path.splitext(filepath)[1]
outputFile = inputFileName + " -1" + inputFileType
# print(filepath)
# print(f"Location: {location}")
# print(f"input filename: {inputFileName}")
# print(f"input filetype: {inputFileType}")
# print(f"output filename: {outputFile}")
startTime = 0
endTime = 2
subprocess.call(f'HandbrakeCLI.exe -i "{filepath}" -o "{location + outputFile}" --start-at duration:{startTime} --stop-at duration:{endTime}', cwd="C:\\Program Files\\HandBrake", shell=True)
print("It's finished, run the rest.")
Он отлично работает, когда shell = True и печатает все на консоль, но не работает, пытаясь избежать загромождения консоли. Это возможно?