我在Windows 10上使用Python3.x。我在使用子进程来执行命令,以使用FFmpeg从某些图像创建幻灯片。除了输出文件已经存在时,它通常可以正常工作。发生这种情况时,我会在stderr上收到一条消息,提示用户是否应该覆盖。此消息不会以换行符结尾。这是我当前正在使用的代码
with subprocess.Popen([FFMPEG_PATH,
'-i', 'img_%03d.png',
'-vf', vfCommand,
'-hide_banner',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'{0}'.format(vidOutputPath)]
, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as outProcess:
while outProcess.poll() is None:
data = outProcess.stdout.read(1)
data = data.decode()
print(data, end='')
在最后一行使用print(data,end =''),我将看到格式正确的所有内容,但不会显示“文件存在覆盖[y / N]”提示。而如果仅执行print(data),则提示将仅在一行上显示一个字符。
我的最终目标是显示命令并允许用户对其进行响应。我不想使用shell = true,因为这样会打开程序来注入问题,并且如果可能的话,我不想在必须安装/下载python附加软件包的地方做任何事情。我想保留此位置,即使是基本用户也可以安装python并立即使用该程序。