在Python中的特定行添加或删除文件中的某些文本
问题描述:
我想编辑python脚本中的Apache2配置文件。我想向ServerAlias指令添加或删除域名,以便脚本需要编辑特定文件并搜索以“ServerAlias”开头的行并向该行附加或删除特定的域名。在Python中的特定行添加或删除文件中的某些文本
我不知道该怎么做,任何暗示在文档将不胜感激,我也在考虑使用一个子进程来使用一些bash工具,如sed。工具
答
夫妇,你需要为你的交易
- str.startswith
-
str.join或只是
+
(字符串concatination) - readline读取文件按顺序一个
- Offcourse opening and closing a file
- write a file
答
可以使用fileinput.input与就地模式:
import fileinput
for line in fileinput.input("mifile", inplace=True):
if line.startswith("ServerAlias"):
line = doherewhatyouwant(line)
print line,
从文档:
如果关键字参数就地= True时,传递给fileinput.input()或 到的FileInput构造函数中,文件被移动到备份文件并且标准输出被定向到输入文件(如果一个名称与备份文件名称相同的文件已经存在,它将被无提示地替换)。 这使得可以编写一个过滤器来重写其输入文件 。如果给出备份参数(通常为 backup ='。'),则它指定备份文件的扩展名,并且备份文件保留在附近;默认情况下,扩展名为 '.bak',并在输出文件关闭时被删除。当读取标准输入时,原位 过滤被禁用。
为什么它需要是Python? – 2011-12-31 07:41:32
因为它是Django项目的一部分,所以在整个项目中使用相同的语言会很好。并且因为我喜欢Python :) – Bastian 2011-12-31 09:32:30
[在Python中搜索并替换文件中的一行]可能的重复(http://stackoverflow.com/questions/39086/search-and-replace-a-line-in-a- python) – joaquin 2011-12-31 10:06:34