在Python中在特定行追加或删除文件内容
我想在一个Python脚本里编辑Apache2的配置文件。我想要在ServerAlias指令中添加或删除一个域名,所以这个脚本需要编辑一个特定的文件,并找到以“ServerAlias”开头的那一行,然后在这一行上添加或删除一个特定的域名。
我不太确定该怎么做,如果能给我一些文档的提示就太好了。我也在考虑使用子进程来调用一些bash工具,比如sed。
2 个回答
1
你可以使用fileinput.input这个函数,并设置为“就地”模式:
import fileinput
for line in fileinput.input("mifile", inplace=True):
if line.startswith("ServerAlias"):
line = doherewhatyouwant(line)
print line,
根据文档的说明:
如果你在调用fileinput.input()或者FileInput构造函数时,传入了关键字参数inplace=True,那么原文件会被移动到一个备份文件中,同时标准输出会指向这个输入文件(如果已经存在一个和备份文件同名的文件,它会被默默替换掉)。这样就可以写一个过滤器,直接在原文件上进行修改。如果你提供了备份参数(通常是backup='.'),它会指定备份文件的扩展名,备份文件会保留;默认情况下,扩展名是'.bak',并且在输出文件关闭时会被删除。当读取标准输入时,就不支持“就地”过滤了。
0
你在编程时需要用到的一些工具
- str.startswith:这个方法可以用来检查一个字符串是不是以某个特定的内容开头。
- str.join 或者直接用
+
(字符串连接):这两个方法可以把多个字符串合并成一个字符串。 - readline:这个方法可以用来逐行读取文件里的内容。
- 当然,还要学会打开和关闭文件:这是处理文件的基本操作。
- 写入文件:这个操作可以把内容保存到文件里。