чтение файлов в питоне

Мне нужно прочитать файл, как показано ниже:

config = {
    'name': 'hello',
    'see?': 'world'
}

используя такие ключи, как имя и видеть? , но я не хочу жестко кодировать значения в сценарии. И как в этом случае справиться с более глубокой вложенностью. Файл может содержать больше таких разделов, как я могу распознать, что «имя» принадлежит какому разделу во время выполнения.


person Jagdev Singh    schedule 15.03.2011    source источник
comment
Я не понимаю вашего вопроса. Не могли бы вы привести пример файла конфигурации и структуру данных, которую вы хотите получить из него?   -  person Björn Pollex    schedule 15.03.2011
comment
прочитать файл с этим конфигом? что это за конфиг? вы хотите открыть файл, ничего страшного   -  person Mohammad Efazati    schedule 15.03.2011
comment
Возможный дубликат: stackoverflow.com/questions/186916/   -  person Marijn van Vliet    schedule 15.03.2011
comment
Если конкретный ответ решает вашу проблему, примите его, поставив галочку слева от ответа.   -  person Björn Pollex    schedule 15.03.2011


Ответы (4)


Если вы кодируете свою структуру как данные JSON, как я думаю, вы хотите, и вы сделали в примере, вам просто нужно записать и прочитать структуру в файле. В качестве примера:

 import json 
 config = {
  'name': 'hello',
  'see?': 'world'
 }
 out = open('config.json','w')
 out.write(json.dumps(config))
 out.close() 

Файл конфигурации сохранен

 input = open('config.json','r')
 config = json.loads(input.read())
 input.close()
 print config

Файл конфигурации перезагружен

person Community    schedule 15.03.2011

Этот файл выглядит как действительный python. Если вы можете переименовать его file.py, вы можете просто использовать:

from file import config
print config['name']
print config['see?']

В противном случае файл может быть JSON. См. http://docs.python.org/library/json.html.

person rjmunro    schedule 15.03.2011
comment
Я бы выбрал json, а не читал как python. Гораздо безопаснее и будет выдавать уловимые ошибки, а не с ошибками синтаксического анализа. - person Phil H; 15.03.2011
comment
@Phil H: Примером является Python. Импорт Python с параметрами конфигурации абсолютно безопасен и сообщает об идеально отлаживаемых ошибках. - person S.Lott; 15.03.2011

Похоже, вам нужен файл конфигурации? Формат уже определен или вы его создаете? Если вам просто нужно прочитать параметры из файла:

http://docs.python.org/library/configparser.html

который обрабатывает формат INI. Если у вас уже есть файл в указанном выше формате, можете ли вы определить, является ли он форматом JSON? Если да, то для этого тоже есть модуль.

person SpliFF    schedule 15.03.2011

Кажется, ваш формат конфигурации является допустимым python или JSON, который имеет встроенный парсер в python. См. http://docs.python.org/library/json.html для получения дополнительной информации. . Если вы пытаетесь импортировать действительный файл Python в качестве конфигурации, просто используйте import.

person orlp    schedule 15.03.2011