Python-Popen(shlex.split(command),shell=False)-不使用ffmpeg

Python-Popen(shlex.split(command),shell=False)-不使用ffmpeg,python,ffmpeg,popen,shlex,Python,Ffmpeg,Popen,Shlex,我正在使用Popen(shlex.split(command)运行ffmpeg命令,该命令从quicktime mov文件中保存wav文件,同时还保存ffmpeg日志文件。如果我使用此命令: command = './ffmpeg/ffmpeg -i /Users/me/Documents/MOVS/source.mov -map 0:1 -acodec pcm_s16le -y /Users/me/Documents/MOVS/source_01.wav' p = Popen(shlex.s

我正在使用
Popen(shlex.split(command)
运行ffmpeg命令,该命令从quicktime mov文件中保存wav文件,同时还保存ffmpeg日志文件。如果我使用此命令:

command = './ffmpeg/ffmpeg -i /Users/me/Documents/MOVS/source.mov -map 0:1 -acodec pcm_s16le -y /Users/me/Documents/MOVS/source_01.wav'

p = Popen(shlex.split(command), shell=False)
然后命令正确完成,但如果我添加保存日志文件的行,则它将不再工作,因此如果我使用:

command = './ffmpeg/ffmpeg -i /Users/me/Documents/MOVS/source.mov -map 0:1 -acodec pcm_s16le -y /Users/me/Documents/MOVS/source_01.wav 2> /Users/me/Documents/MOVS/lofFile.txt'

p = Popen(shlex.split(command), shell=False)
然后它就不起作用了。在命令行中使用任一命令(不使用python)都可以。如果我只使用:

p = Popen(command, shell=True)
然后一切正常,但出于其他原因,我需要使用
shell=False


我只是不明白为什么它会因为添加了“正确”的
2>/Users/me/Documents/MOVS/lofFile.txt的结束行而中断,而
IO重定向是由shell提供的,因此,如果设置
shell=False
命令将不会在shell中运行,而
>2….
将构成命令的一部分


也许,作为一种解决方法,您可以尝试使用
-report
选项来
ffmpeg
。这将发送日志到一个按照惯例命名的文件ffmpeg yyymmdd HHMMSS.log。

IO重定向由shell提供,因此,如果设置
shell=False
,则命令将不会在shell中运行,并且
.2。…
将构成命令的一部分


也许,作为一种解决方法,您可以尝试使用
-report
选项来
ffmpeg
。这将发送日志到一个按照惯例命名的文件ffmpeg yyymmdd HHMMSS.log。

IO重定向由shell提供,因此,如果设置
shell=False
,则命令将不会在shell中运行,并且
.2。…
将构成命令的一部分


也许,作为一种解决方法,您可以尝试使用
-report
选项来
ffmpeg
。这将发送日志到一个按照惯例命名的文件ffmpeg yyymmdd HHMMSS.log。

IO重定向由shell提供,因此,如果设置
shell=False
,则命令将不会在shell中运行,并且
.2。…
将构成命令的一部分


也许,作为一种解决方法,您可以尝试使用
-report
选项来
ffmpeg
。这将发送日志到一个按照约定命名的文件ffmpeg yyymmdd HHMMSS.log。

如果我错了,请纠正我,但语法是否正确
2>
?(而不是
>2
)你的权利,对不起,只是打错了。问题更新了。如果我错了,请纠正我,但不是正确的语法
2>
?(而不是
>2
)你的权利,对不起,只是打错了。问题更新了。如果我错了,请纠正我,但不是正确的语法
2>
?(而不是
>2
)您的权利,对不起,只是打错了。问题已更新。如果我错了,请纠正我,但语法是否正确
2>
?(而不是
>2
)您的权利,对不起,只是打错了。问题已更新。