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

У меня проблемы с запуском подпроцесса в 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.")

Он отлично работает, когда его оболочка = True и печатает все на консоль, но не удается при попытке избежать загромождения консоли.Возможно ли это?

...