我无法执行以下行:
os.system("timeout 1s bash -c \"ffmpeg -i \""+path+\"+" | <some_<other_cmd>\"")
因此,此命令的目的是为整个命令设置超时,即从路径中管道化某些ffmpeg信息。
问题是因为bash -c&#34; CMD&#34;是预期的,但该命令还包含" "
。
是否有另一种定义\"path\"
的方法,因为路径可以包含空格?还是另一个可以解决我的问题的解决方案?
提前致谢!
答案 0 :(得分:1)
Triple sinqle引用可以解决问题(这样你就不必逃避双引号):
os.system('''timeout 1s bash -c "ffmpeg -i "+path+"+" | cat''')
但总的来说..为什么不使用具有更健全语法的subprocess.call
?
答案 1 :(得分:0)
您可以使用全部支持timeout
参数的subprocess相关函数来替换os.system
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