首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python脚本中调用sed命令?

问如何在python脚本中调用sed命令?
EN

Ask Ubuntu用户
提问于 2016-03-18 12:06:18
回答 1查看 67.5K关注 0票数 9

通过python脚本,我尝试使用sed命令将字符串替换为文件中的字符串。我通过脚本中的subprocess.call实现了这一点。

当我在shell脚本或命令中运行命令时,它运行得很好,但是在python中,我得到了一个结果:“没有输入文件”。知道怎么纠正这个错误吗?

代码语言:javascript
复制
#!/usr/bin/python
import subprocess
subprocess.call(["sed -i -e 's/hello/helloworld/g'","www.txt"], shell=True)

输出

代码语言:javascript
复制
No input file
EN

回答 1

Ask Ubuntu用户

发布于 2016-03-18 12:17:53

对于subprocess.call,命令的每个参数都应该是列表中的单独项( shell不应该设置为True):

代码语言:javascript
复制
subprocess.call(["sed", "-i", "-e",  's/hello/helloworld/g', "www.txt"])

或者,整个命令应该使用一个字符串,使用shell=True:

代码语言:javascript
复制
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,.])

票数 18
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/747450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档