Учитывая следующий формат ( .properties или .ini ):
propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN
Для Java существует класс Properties, который предлагает функциональность для анализа / взаимодействия с вышеуказанным форматом.
Есть ли что - то подобное в Python «S стандартной библиотеки (2.x)?
Если нет, какие у меня есть альтернативы?
python
properties
Андрей Чобану
источник
источник
Ответы:
Для файлов .ini существует модуль ConfigParser, который обеспечивает формат, совместимый с файлами .ini.
В любом случае, нет ничего доступного для разбора полных файлов .properties, когда я должен это сделать, я просто использую jython (я говорю о скриптах).
источник
Мне удалось заставить это работать
ConfigParser
, никто не показал никаких примеров того, как это сделать, так что вот простой python-ридер файла свойств и пример файла свойств. Обратите внимание, что расширение все еще есть.properties
, но мне пришлось добавить заголовок раздела, похожий на тот, который вы видите в файлах .ini ... немного подонок, но он работает.Файл Python:
PythonPropertyReader.py
Файл свойств:
ConfigFile.properties
Для получения дополнительной информации читайте: https://docs.python.org/2/library/configparser.html.
источник
Файл свойств Java также является допустимым кодом Python. Вы можете переименовать файл myconfig.properties в myconfig.py. Затем просто импортируйте ваш файл, вот так
и получить доступ к свойствам напрямую
источник
prop.name="val"
не будет работать в этом случае.A java properties file is valid python code
Я должен отличаться. Некоторые файлы свойств Java будут проходить для допустимого кода Python, но, конечно, не все. Как сказал @mmjj, точки - это проблема. Так что без кавычек буквенные строки. -1.Я знаю, что это очень старый вопрос, но он мне нужен только сейчас, и я решил реализовать свое собственное решение, чистое решение на Python, которое охватывает большинство случаев использования (не все):
Вы можете изменить на
sep
':' для разбора файлов в формате:Код правильно разбирает строки вроде:
Вы получите диктат с:
источник
foo = "bar" # bat
.foo
со значением"bar" # bat
.l = line.strip()
его,l = line.split(comment_char)[0].strip()
а затем только проверять,l
имеет ли значение значение в следующей строке сif l:
.Если у вас есть возможность форматов файлов, я предлагаю использовать .ini и Python ConfigParser, как уже упоминалось. Если вам нужна совместимость с файлами Java .properties, я написал для нее библиотеку jprops . Мы использовали pyjavaproperties, но, столкнувшись с различными ограничениями, я реализовал свои собственные. Он имеет полную поддержку формата .properties, включая поддержку юникода и лучшую поддержку escape-последовательностей. Jprops также может анализировать любой файлоподобный объект, тогда как pyjavaproperties работает только с реальными файлами на диске.
источник
если у вас нет многострочных свойств и очень простая потребность, несколько строк кода могут решить эту проблему за вас:
Файл
t.properties
:Код Python:
источник
Это не совсем свойства, но в Python есть хорошая библиотека для разбора файлов конфигурации. Также посмотрите этот рецепт: замена Python для java.util.Properties .
источник
Вот ссылка на мой проект: https://sourceforge.net/projects/pyproperties/ . Это библиотека с методами работы с файлами * .properties для Python 3.x.
Но это не основано на java.util.Properties
источник
Это один к одному замена java.util.Propeties
Из документа:
источник
Вы можете использовать файл-подобный объект в
ConfigParser.RawConfigParser.readfp
определенном здесь -> https://docs.python.org/2/library/configparser.html#ConfigParser.RawConfigParser.readfpОпределите класс, который переопределяет,
readline
который добавляет имя раздела перед фактическим содержимым вашего файла свойств.Я упаковал его в класс, который возвращает
dict
все определенные свойства.источник
Я использовал это, эта библиотека очень полезна
источник
Это то, что я делаю в своем проекте: я просто создаю другой файл .py с именем properties.py, который включает в себя все общие переменные / свойства, которые я использовал в проекте, и в любом файле нужно ссылаться на эти переменные,
Использовал этот метод, чтобы сохранить svn-мир, когда я часто менял расположение разработчиков, и некоторые общие переменные были довольно относительны к локальной среде. Хорошо работает для меня, но не уверен, что этот метод будет предложен для формальной среды разработки и т. Д.
источник
Содержимое test.json: {"host": "127.0.0.1", "user": "jms"}
источник
Я создал модуль python, который почти аналогичен классу свойств Java (на самом деле он похож на PropertyPlaceholderConfigurer весной, который позволяет вам использовать $ {variable-reference} для ссылки на уже определенное свойство)
РЕДАКТИРОВАТЬ: Вы можете установить этот пакет, выполнив команду (в настоящее время тестируется для Python 3).
pip install property
Проект размещен на GitHub
Пример: (Подробную документацию можно найти здесь )
Допустим, у вас есть следующие свойства, определенные в файле my_file.properties
Код для загрузки вышеуказанных свойств
источник
Если вам нужно просто прочитать все значения из раздела в файле свойств:
Ваше
config.properties
расположение файлов:Вы код:
Это даст вам словарь, в котором ключи такие же, как в конфигурационном файле, и соответствующие им значения.
details_dict
является :Теперь, чтобы получить значение key1:
details_dict['key1']
Помещение всего этого в метод, который читает этот раздел из файла конфигурации только один раз (при первом вызове метода во время выполнения программы).
Теперь вызовите вышеуказанную функцию и получите требуемое значение ключа:
-------------------------------------------------- -----------
Расширение подхода, упомянутого выше, автоматическое чтение раздела за разделом, а затем доступ по имени раздела и имени ключа.
Чтобы получить доступ к:
(здесь «DB» - это имя раздела в конфигурационном файле, а «port» - это ключ в разделе «DB».)
источник
В двух строках кода показано, как использовать Python List Conceptionsion для загрузки файла свойств 'java style'.
Пожалуйста, посмотрите на пост ниже для получения дополнительной информации https://ilearnonlinesite.wordpress.com/2017/07/24/reading-property-file-in-python-using-comprehension-and-generators/
источник
Вы можете использовать параметр "fromfile_prefix_chars" с argparse для чтения из файла конфигурации, как показано ниже ---
temp.py
файл конфигурации
Команда выполнения
источник
Я сделал это с помощью ConfigParser следующим образом. Код предполагает, что в той же директории, где находится BaseTest, есть файл config.prop:
config.prop
BaseTest.py:
источник
Это то, что я написал для синтаксического анализа файла и установки его в качестве переменных env, которые пропускают комментарии, а строки неключевых значений добавляют переключатели для указания hg: d
и укажите файл свойств, который необходимо проанализировать, например: python EnvParamSet.py -c # -s = env.properties
источник
Lightbend выпустил библиотеку Typesafe Config , которая анализирует файлы свойств, а также некоторые расширения на основе JSON. Библиотека Lightbend предназначена только для JVM, но, похоже, она получила широкое распространение, и теперь есть порты на многих языках, включая Python: https://github.com/chimpler/pyhocon
источник
Вы можете использовать следующую функцию, которая является измененным кодом @mvallebr. Он учитывает комментарии файла свойств, игнорирует пустые новые строки и позволяет получить одно значение ключа.
источник
это работает для меня.
источник
Я следовал подходу configparser, и он работал довольно хорошо для меня. Создал один файл PropertyReader и использовал там парсер конфигурации до свойства ready, соответствующего каждому разделу.
** Используется Python 2.7
Содержимое файла PropertyReader.py:
Содержимое файла схемы чтения:
Содержимое файла .properties:
источник
создайте словарь в вашем модуле python и сохраните все в нем и получите к нему доступ, например:
Теперь для доступа к нему вы можете просто сделать:
источник