Python os.system超时与字符串

时间:2016-06-03 17:11:13

标签: python linux bash

我无法执行以下行:

os.system("timeout 1s bash -c \"ffmpeg -i \""+path+\"+" | <some_<other_cmd>\"")

因此,此命令的目的是为整个命令设置超时,即从路径中管道化某些ffmpeg信息。

问题是因为bash -c&#34; CMD&#34;是预期的,但该命令还包含" "

是否有另一种定义\"path\"的方法,因为路径可以包含空格?还是另一个可以解决我的问题的解决方案?

提前致谢!

2 个答案:

答案 0 :(得分:1)

Triple sinqle引用可以解决问题(这样你就不必逃避双引号):

os.system('''timeout 1s bash -c "ffmpeg -i "+path+"+" | cat''')

但总的来说..为什么不使用具有更健全语法的subprocess.call

答案 1 :(得分:0)

在其他帖子中也回答了类似的问题:12

您可以使用全部支持timeout参数的subprocess相关函数来替换os.system

例如subprocess.check_output

ffmpegCmd = "ffmpeg -I %s | %s" % (path, someOtherCmd)
outputBytes = subprocess.check_output(ffmpegCmd, shell=True, timeout=1)
outputStr = outputBytes.decode("utf-8") # change utf-8 to your console encoding if necessary