将双引号shell命令在python中传递给subprocess.Popen()?

前端之家收集整理的这篇文章主要介绍了将双引号shell命令在python中传递给subprocess.Popen()?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图传递一个命令在shell中工作,只在文本双引号在命令行中的“concat:file1 | file2”参数ffmpeg。

我不能让这个工作从python与subprocess.Popen()。任何人都有一个想法如何传递报价到子过程。

这里是代码

command = "ffmpeg -i "concat:1.ts|2.ts" -vcodec copy -acodec copy temp.mp4"

output,error = subprocess.Popen(command,universal_newlines=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()

当我这样做,ffmpeg将不会采取任何其他方式,而不是引号周围的连接区。有没有办法成功地传递这行到subprocess.Popen命令?

我建议使用列表形式的调用,而不是引用的字符串版本:
command = ["ffmpeg","-i","concat:1.ts|2.ts","-vcodec","copy","-acodec","temp.mp4"]
output,error  = subprocess.Popen(
                    command,stderr=subprocess.PIPE).communicate()

这更准确地表示将要传递到结束进程的准确的参数集,并且消除了对shell引用的需要。

也就是说,如果你绝对要使用纯字符串版本,只需使用不同的引号(和shell = True):

command = 'ffmpeg -i "concat:1.ts|2.ts" -vcodec copy -acodec copy temp.mp4'
output,shell=True,stderr=subprocess.PIPE).communicate()
原文链接:https://www.f2er.com/bash/388908.html

猜你在找的Bash相关文章