如何从配置文件中删除白色字符?

2024-06-01 08:33:14 发布

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

我想使用python修改samba配置文件。 这是我的密码

from ConfigParser import SafeConfigParser
parser = SafeConfigParser()
parser.read( '/etc/samba/smb.conf' )

for section in parser.sections():
    print section
    for name, value in parser.items( section ):
        print '  %s = %r' % ( name, value )

但是配置文件包含tab,有没有可能忽略tab?在

^{pr2}$

Tags: nameinfromimportparser密码forvalue
2条回答

试试这个:

from StringIO import StringIO

data = StringIO('\n'.join(line.strip() for line in open('/etc/samba/smb.conf')))

parser = SafeConfigParser()
parser.readfp(data)
...

另一种方法(感谢@mgilson的想法):

^{pr2}$

我将创建一个小代理类来为解析器提供数据:

class FileStripper(object):
    def __init__(self,f):
        self.fileobj = open(f)
        self.data = ( x.strip() for x in self.fileobj )
    def readline(self):
        return next(self.data)
    def close(self):
        self.fileobj.close()

parser = SafeConfigParser()
f = FileStripper(yourconfigfile)
parser.readfp(f)
f.close()

你甚至可以做得更好一些(允许多个文件,完成后自动关闭,等等):

^{pr2}$

它可以这样使用:

parser = SafeConfigParser()
parser.readfp( FileStripper(yourconfigfile1,yourconfigfile2) )
#parser.readfp( FileStripper(yourconfigfile) ) #this would work too
#No need to close anything :).  Horray Context managers!

相关问题 更多 >