使用子进程调用命令行程序而不会使控制台混乱,可能吗?

时间:2018-12-28 17:56:37

标签: python-3.x subprocess handbrake handbrakecli

我很难在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 个答案:

没有答案