我很难在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时,它可以完美地工作,并在控制台上打印所有内容,但在尝试避免使控制台混乱时失败。这可能吗?