通过python脚本,我尝试使用sed命令将字符串替换为文件中的字符串。我通过脚本中的subprocess.call实现了这一点。
当我在shell脚本或命令中运行命令时,它运行得很好,但是在python中,我得到了一个结果:“没有输入文件”。知道怎么纠正这个错误吗?
#!/usr/bin/python
import subprocess
subprocess.call(["sed -i -e 's/hello/helloworld/g'","www.txt"], shell=True)输出
No input file发布于 2016-03-18 12:17:53
对于subprocess.call,命令的每个参数都应该是列表中的单独项( shell不应该设置为True):
subprocess.call(["sed", "-i", "-e", 's/hello/helloworld/g', "www.txt"])或者,整个命令应该使用一个字符串,使用shell=True:
subprocess.call(["sed -i -e 's/hello/helloworld/g' www.txt"], shell=True)这些参数在subprocess.call和Popen中得到了类似的处理,正如subprocess.Popen文档中所说的那样:
在使用
shell=True的Unix上,shell默认为/bin/sh。…如果args是序列,则第一个项指定命令字符串,任何附加项都将被视为shell本身的附加参数。也就是说,Popen做的相当于: Popen(['/bin/sh','-c',args0,args1,.])
https://askubuntu.com/questions/747450
复制相似问题