在Python中的特定行添加或删除文件中的某些文本

时间:2011-12-31 07:23:52

标签: python file unix text

我想在python脚本中编辑Apache2配置文件。我想在ServerAlias指令中添加或删除域名,以便脚本需要编辑特定文件并搜索以“ServerAlias”开头的行,并将特定域名追加或删除到该行。

我不知道怎么做,任何文档提示都会受到赞赏,我也在考虑使用子进程来使用像sed这样的bash工具。

2 个答案:

答案 0 :(得分:1)

您可以将fileinput.input与inplace模式一起使用:

import fileinput

for line in fileinput.input("mifile", inplace=True):
    if line.startswith("ServerAlias"):
        line = doherewhatyouwant(line)
    print line,

来自docs:

  

如果关键字参数inplace = True传递给fileinput.input()或   到FileInput构造函数,文件被移动到备份文件和   标准输出定向到输入文件(如果是相同的文件)   名称作为备份文件已存在,它将被静默替换)。   这使得编写重写其输入文件的过滤器成为可能   到位。如果给出备份参数(通常为   backup ='。'),它指定备份的扩展名   文件,备份文件仍然存在;默认情况下,扩展名是   '.bak'并在输出文件关闭时删除。到位   读取标准输入时禁用过滤。

答案 1 :(得分:0)

您的交易需要的几种工具

  1. str.startswith
  2. str.join或仅+(字符串连接)
  3. readline按顺序读取文件
  4. Offcourse opening and closing a file
  5. write a file