将双引号shell命令在python中传递给subprocess.Popen()?
发布时间:2020-12-15 20:01:29 所属栏目:安全 来源:网络整理
导读:我一直试图传递一个命令在shell中工作,只在文本双引号在命令行中的“concat:file1 | file2”参数ffmpeg。 我不能让这个工作从python与subprocess.Popen()。任何人都有一个想法如何传递报价到子过程。 这里是代码: command = "ffmpeg -i "concat:1.ts|2.ts
我一直试图传递一个命令在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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容