Я хочу прочитать из файла свойств и поместить это значение в строку на основе ключа из файла - PullRequest
0 голосов
/ 31 мая 2019

Я новый обучающийся питон, и мне приходится иметь дело с файлом свойств в этом файле, значение будет присутствовать в паре ключ-значение, и, как мне кажется, мне удалось прочитать файл, но я не смог сохранить или напечатать значение на основе ключа .

Я пробовал с библиотеками jproperties, установленными через pip. Я прочитал значения в объекте, но не смог извлечь записи из него. Перешли на https://pypi.org/project/jproperties/#parsing-a-property-file сайт для справки

from jproperties import Properties

class PropertiesReader:
    p = Properties()
    with open("foobar.properties", "rt") as f:
        p.load(f, "utf-8")

    s = p.__getitem__("name","value")
    z = p.__getattribute__("email","mail")
    print(s)
    print(z)

и файл свойств

foobar.properties
    name = Harsh
    email = abc.xyz

и вывод

Traceback (most recent call last):
  File "/home/harshk/PycharmProjects/demoPythonPOC/scratch.py", line 4, in <module>
    class PropertiesReader:
  File "/home/harshk/PycharmProjects/demoPythonPOC/scratch.py", line 7, in PropertiesReader
    p.load(f, "utf-8")
  File "/usr/local/lib/python3.7/site-packages/jproperties.py", line 804, in load
    self._parse()
  File "/usr/local/lib/python3.7/site-packages/jproperties.py", line 731, in _parse
    while self._parse_logical_line():
  File "/usr/local/lib/python3.7/site-packages/jproperties.py", line 686, in _parse_logical_line
    self._skip_whitespace()
  File "/usr/local/lib/python3.7/site-packages/jproperties.py", line 438, in _skip_whitespace
    c = self._peek()
  File "/usr/local/lib/python3.7/site-packages/jproperties.py", line 378, in _peek
    c = self._source_file.read(1)
  File "/usr/local/lib/python3.7/codecs.py", line 500, in read
    data = self.bytebuffer + newdata
TypeError: can't concat str to bytes

Process finished with exit code 1

Я хочу напечатать как

Harsh
abc.xyz

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Тест под кодом: https://repl.it/repls/EmptyRowdyCategories

from jproperties import Properties

p = Properties()
with open("foobar.properties", "rb") as f:
    p.load(f, "utf-8")


print(p["name"].data)
print(p["email"].data)
1 голос
/ 31 мая 2019

Вы открываете файл как текстовый файл:

with open("foobar.properties", "rt") as f:
    p.load(f, "utf-8")

Но jproperties docs показывает, что вам нужно открыть файл в двоичном режиме:

with open("foobar.properties", "rb") as f:
    p.load(f, "utf-8")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...