在Python中在特定行追加或删除文件内容

2 投票
2 回答
2110 浏览
提问于 2025-04-17 09:18

我想在一个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

你在编程时需要用到的一些工具

  1. str.startswith:这个方法可以用来检查一个字符串是不是以某个特定的内容开头。
  2. str.join 或者直接用 +(字符串连接):这两个方法可以把多个字符串合并成一个字符串。
  3. readline:这个方法可以用来逐行读取文件里的内容。
  4. 当然,还要学会打开和关闭文件:这是处理文件的基本操作。
  5. 写入文件:这个操作可以把内容保存到文件里。

撰写回答