我是subprocess.call函数的新手,我尝试过同一个调用的不同组合,但它不起作用。
我正在尝试执行以下命令:
cmd = 'sort -k1,1 -k4,4n -k5,5n '+outpath+fnametempout+' > '+outpath+fnameout
print cmd
如果我试着打电话,我会得到一个错误:
cmd = cmd.split(" ")
print cmd
subprocess.call(cmd)
我得到的错误是:
sort: stat failed: >: No such file or directory
不要在python中强制执行上述命令:
示例:
这样做,您需要
shell=True
来允许shell重定向工作。更好的方法是:
这样可以避免同时生成一个shell,并且可以避免shell注入类型的攻击。这里,
cmd
是一个列表,如原始列表还应该说明的是,python有非常好的排序工具,因此我怀疑实际上有必要通过子流程将作业传递给
sort
。最后,与其使用
str.split
从字符串中拆分参数,不如使用shlex.split
,因为这样可以正确处理带引号的字符串。相关问题 更多 >
编程相关推荐