Вызов программы командной строки с использованием подпроцесса без загромождения консоли с оболочкой, возможно?

У меня возникли проблемы с запуском подпроцесса в 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 и печатает все на консоль, но не работает, пытаясь избежать загромождения консоли. Это возможно?

0 ответов

Другие вопросы по тегам