Прочитать указанный ключ c json из списка файлов и сохранить его как новый файл - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в python, и задача, которую я выполняю, - извлечь определенный c ключ из списка json файлов в локальном каталоге. Я хотел извлечь данные ключа / значения и сохранить его как новый файл (с существующим именем файла) и повторить его для всех других файлов.

{
    "link": "",
    "site": "",
    "date": "1593534296",
    "filename": "first",
    "size": 728,
    "time": "0",
    "language": "java",
    "data": "",
    "rule": [
        "matched"
    ]
}

import json
dirpath = r'\path'
output = []
files = os.listdir(dirpath)
for filename in files:
    with open(dirpath + '/' + filename , encoding="utf-8") as afile:
        output.append({'filename': filename, 'data': afile.read()})
        afile.close()

Я начал с открытия файлов и их чтения одним. Однако я могу читать только все данные. Могу я получить некоторую помощь о том, как читать только ключевые «данные» и сохранять их в новом файле. Спасибо

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

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

    with open(YOUR_FILE, "r") as f:
        for line in f:
            a = line.replace("\"", "").replace(":", "").replace(",", "").split()
            if a[0] == "data":
                return a
0 голосов
/ 14 июля 2020

Просто используйте:

for filename in files:
    with open(dirpath + '/' + filename , encoding="utf-8") as afile:
        json_obj = json.load(afile)  # uses the json library to parse the file
        output.append({'filename': filename, 'data': json_obj['data']})  # gets only the value of the data attribute
        # you do not need to close the file here, the "with" statement does that for you
    # the file is already closed here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...