2013-03-07 2 views
-2

Как изменить файл .ini? Мой файл ini выглядит так. И я хочу, чтобы раздел формата ini был изменен следующим образом: [Space заменяется на вкладку, за которой следует $] Формат = "[% TimeStamp%] $ (% ThreadID%) $ <% Тег%> $% _%"Как внести изменения с помощью Configparser в файл .ini постоянный

[Sink:2] 

Destination=TextFile 
FileName=/usr/Desktop/A.log 
RotationSize=5000000 
MaxSize=50000000 
MinFreeSpace=10000000 
AutoFlush=true 
Format="[%TimeStamp%] (%ThreadID%) <%Tag%> %_%" 
Filter="%Severity% >= 0" 

Это то, что я написал

import ConfigParser 
config = ConfigParser.RawConfigParser() 
config.read('/usr/local/ZA/var/loggingSettings.ini') 
format = config.get('Sink:2', 'Format') 
tokens = "\t$".join(format.split()) 
print format 
print tokens 
config.set('Sink:2', 'Format', tokens) 
newformat = config.get('Sink:2', 'Format') 
print newformat 

И Выход точно, что я wanted.But, когда я открыть файл .ini, я не вижу здесь никаких изменений? Может быть, когда я снова читаю раздел, его загрузка из памяти? Как я внес изменения постоянные

ответ

0

Попробуйте использовать метод write.

with open('myconfig.ini', 'w') as f:  
    config.write(f) 

Когда вы читаете в конфигурации с config.read('myconfig.ini') у вас есть «спасенный» файл именно так, как она есть. Теперь вы хотите изменить содержимое.

# Get a config object 
config = RawConfigParser() 
# Read the file 'myconfig.ini' 
config.read('myconfig.ini') 
# Read the value from section 'Orange', option 'Segue' 
someVal = config.get('Orange', 'Segue') 
# If the value is 'Sword'... 
if someVal == 'Sword': 
    # Then we set the value to 'Llama' 
    config.set('Orange', 'Segue', 'Llama') 
# Rewrite the configuration to the .ini file 
with open('myconfig.ini', 'w') as myconfig: 
    config.write(myconfig) 
+0

IOError: [Errno 13] Разрешение отклонено. Как решить проблему с разрешением. Как я передаю скрипт sudo credential – sunshooter

+0

Ну, вам нужно убедиться, что у вас есть права на запись, прежде чем вы сможете записать в файл. 'chmod a + w myconfig.ini' в оболочке unix позволит кому-либо писать файл, так что это должно решить вашу проблему. Или вы можете, вероятно, выполнить скрипт с 'sudo python myscript.py'. – William

+0

@Wiliam, если я меняю файл, его формат изменяется. Как обеспечить, чтобы формат файла ini оставался неповрежденным. Мне нужно просто отредактировать один из разделов в уже существующем ini-файле. пожалуйста, совет – sunshooter

Смежные вопросы