Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jwodder/javaproperties
Python library for reading & writing Java .properties files
https://github.com/jwodder/javaproperties
available-on-pypi config configfile configuration java javaproperties properties python
Last synced: 6 days ago
JSON representation
Python library for reading & writing Java .properties files
- Host: GitHub
- URL: https://github.com/jwodder/javaproperties
- Owner: jwodder
- License: mit
- Created: 2016-08-13T22:19:16.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-08-05T17:52:42.000Z (4 months ago)
- Last Synced: 2024-09-19T13:21:48.976Z (2 months ago)
- Topics: available-on-pypi, config, configfile, configuration, java, javaproperties, properties, python
- Language: Python
- Size: 446 KB
- Stars: 30
- Watchers: 3
- Forks: 10
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
|repostatus| |ci-status| |coverage| |pyversions| |license|
.. |repostatus| image:: https://www.repostatus.org/badges/latest/active.svg
:target: https://www.repostatus.org/#active
:alt: Project Status: Active - The project has reached a stable, usable
state and is being actively developed... |ci-status| image:: https://github.com/jwodder/javaproperties/actions/workflows/test.yml/badge.svg
:target: https://github.com/jwodder/javaproperties/actions/workflows/test.yml
:alt: CI Status.. |coverage| image:: https://codecov.io/gh/jwodder/javaproperties/branch/master/graph/badge.svg
:target: https://codecov.io/gh/jwodder/javaproperties.. |pyversions| image:: https://img.shields.io/pypi/pyversions/javaproperties.svg
:target: https://pypi.org/project/javaproperties.. |license| image:: https://img.shields.io/github/license/jwodder/javaproperties.svg?maxAge=2592000
:target: https://opensource.org/licenses/MIT
:alt: MIT License`GitHub `_
| `PyPI `_
| `Documentation `_
| `Issues `_
| `Changelog `_``javaproperties`` provides support for reading & writing |properties|_ (both
the simple line-oriented format and XML) with a simple API based on the
``json`` module — though, for recovering Java addicts, it also includes a
``Properties`` class intended to match the behavior of |propclass|_ as much as
is Pythonically possible.Previous versions of ``javaproperties`` included command-line programs for
basic manipulation of ``.properties`` files. As of version 0.4.0, these
programs have been split off into a separate package, |clipkg|_.Installation
============
``javaproperties`` requires Python 3.8 or higher. Just use `pip
`_ for Python 3 (You have pip, right?) to install it::python3 -m pip install javaproperties
Examples
========Dump some keys & values (output order not guaranteed):
>>> properties = {"key": "value", "host:port": "127.0.0.1:80", "snowman": "☃", "goat": "🐐"}
>>> print(javaproperties.dumps(properties))
#Mon Sep 26 14:57:44 EDT 2016
key=value
goat=\ud83d\udc10
host\:port=127.0.0.1\:80
snowman=\u2603Load some keys & values:
>>> javaproperties.loads('''
... #Mon Sep 26 14:57:44 EDT 2016
... key = value
... goat: \\ud83d\\udc10
... host\\:port=127.0.0.1:80
... #foo = bar
... snowman ☃
... ''')
{'goat': '🐐', 'host:port': '127.0.0.1:80', 'key': 'value', 'snowman': '☃'}Dump some properties to a file and read them back in again:
>>> with open('example.properties', 'w', encoding='latin-1') as fp:
... javaproperties.dump(properties, fp)
...
>>> with open('example.properties', 'r', encoding='latin-1') as fp:
... javaproperties.load(fp)
...
{'goat': '🐐', 'host:port': '127.0.0.1:80', 'key': 'value', 'snowman': '☃'}Sort the properties you're dumping:
>>> print(javaproperties.dumps(properties, sort_keys=True))
#Mon Sep 26 14:57:44 EDT 2016
goat=\ud83d\udc10
host\:port=127.0.0.1\:80
key=value
snowman=\u2603Turn off the timestamp:
>>> print(javaproperties.dumps(properties, timestamp=None))
key=value
goat=\ud83d\udc10
host\:port=127.0.0.1\:80
snowman=\u2603Use your own timestamp (automatically converted to local time):
>>> print(javaproperties.dumps(properties, timestamp=1234567890))
#Fri Feb 13 18:31:30 EST 2009
key=value
goat=\ud83d\udc10
host\:port=127.0.0.1\:80
snowman=\u2603Dump as XML:
>>> print(javaproperties.dumps_xml(properties))
value
🐐
127.0.0.1:80
☃New in v0.6.0: Dump Unicode characters as-is instead of escaping them:
>>> print(javaproperties.dumps(properties, ensure_ascii=False))
#Tue Feb 25 19:13:27 EST 2020
key=value
goat=🐐
host\:port=127.0.0.1\:80
snowman=☃`And more! `_
.. |properties| replace:: Java ``.properties`` files
.. _properties: https://en.wikipedia.org/wiki/.properties.. |propclass| replace:: Java 8's ``java.util.Properties``
.. _propclass: https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html.. |clipkg| replace:: ``javaproperties-cli``
.. _clipkg: https://github.com/jwodder/javaproperties-cli