Если файл в формате java.util.Properties
, вы можете использовать pyjavaproperties
:
from pyjavaproperties import Properties
p = Properties()
p.load(open('input.properties'))
for name, value in [('ENABLEPRINTER', 'y'), ('PRINTERLIST', 'PRNT3')]:
p[name] = value
p.store(open('output.properties', 'w'))
Это не очень надежно, но различные исправления могут принести пользу следующим людям.
Чтобы заменить несколько раз в короткой строке:
for old, new in [('ENABLEPRINTER', 'y'), ('PRINTERLIST', 'PRNT3')]:
some_string = some_string.replace(old, new)
Чтобы заменить имена переменных в файле конфигурации (используя configobj
module ):
import configobj
conf = configobj.ConfigObj('test.conf')
for old, new in [('ENABLEPRINTER', 'y'), ('PRINTERLIST', 'PRNT3')]:
conf[new] = conf[old]
del conf[old]
conf.write()
Если под replace('ENABLEPRINTER', 'y')
вы подразумеваете присвоение y
переменной ENABLEPRINTER
, тогда:
import configobj
ENCODING='utf-8'
conf = configobj.ConfigObj('test.conf', raise_errors=True,
file_error=True, # don't create file if it doesn't exist
encoding=ENCODING, # used to read/write file
default_encoding=ENCODING) # str -> unicode internally (useful on Python2.x)
conf.update(dict(ENABLEPRINTER='y', PRINTERLIST='PRNT3'))
conf.write()
Кажется, configobj
не совместим с:
name = '.'something
Вы могли бы процитировать это:
name = "'.'something"
Или:
name = '.something'
Или
name = .something
conf.update()
делает что-то похожее на:
for name, value in [('ENABLEPRINTER', 'y'), ('PRINTERLIST', 'PRNT3')]:
conf[name] = value