如何用Python修改配置文件

2024-09-28 22:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python修改配置文件。如何执行与此格式的多个sed命令等效的操作:

sed -ci 's/ServerTokens OS/ServerTokens Prod/' /etc/httpd/conf/httpd.conf

在Python中效率最高?这就是我现在正在做的:

^{pr2}$

这是不必要的复杂,因为我可以只使用子进程和sed。有什么建议吗?在


Tags: 命令ci进程osconf格式配置文件etc
1条回答
网友
1楼 · 发布于 2024-09-28 22:20:07

您可以在Python内部使用正则表达式,方法与sed中的方法非常类似。只需使用Python regular expressions library。您可能对re.sub()方法感兴趣,该方法与您的示例中使用的sed的s命令相当。在

如果您想高效地执行此操作,您可能只需要在每行运行一个替换命令,如果它被更改,则跳过它,类似于您在示例代码中执行此操作的方式。为了达到这个目的,您可以使用re.subn,而不是re.sub或{a3}与匹配的组组合使用。在

下面是一个例子:

import re

server_name = 'blah'
webmaster_email = 'blah@blah.com'

SUBS = ( (r'^#ServerName www.example.com', 'ServerName %s' % server_name),
        (r'^ServerAdmin root@localhost', 'ServerAdmin %s' % webmaster_email),
        (r'KeepAlive On', 'KeepAlive Off')
       )

with open("httpd.conf", "r+") as file:
    tmp=[]
    for i in file:
        for s in SUBS:
            ret=re.subn(s[0], s[1], i)
            if ret[1]>0:
                tmp.append(ret[0])
                break
        else:
            tmp.append(i)
    for i in tmp:
        print i,

相关问题 更多 >