将Dictionary和写入文本文件并再次作为字典阅读?

时间:2017-10-19 22:34:26

标签: json python-3.x dictionary

我正在点击一个链接并获得每次点击的json文件。然后我将数据写入文本文件。但是当我想再读一遍时,我想把它读成字典。我怎么能这样做。

def url_seq(limit=5):
    for i in range(limit):
        link = 'http:...x={}'.format(i)
    yield link

def json_seq(link):
    for text in link:
        with urllib.request.urlopen(text) as url:
            data = json.loads(url.read().decode())
            yield data['data']

open('data.txt', 'w').close()
for item in json_seq(url_seq(limit=100)):
        with open('data.txt', 'a') as f:
            json.dump(item, f)
            f.write(',')

输出文件是这样的,     {'x': 0.0, 'y': -7.462079426179981},{'x': 1.0, 'y':-5.300602624446985},{'x': 2.0, 'y': 1.4418651159990272}, ... ,

但我想把它读成字典。这样我就可以把它们放到熊猫数据框中进行分析了。

下面的代码给了我一个列表,有没有办法把它读到字典中。我是Python的新手,对不起,如果我的意思是非pythonic的东西。提前谢谢。

f = open('data.txt', 'r')
lines = f.read().split(',')

1 个答案:

答案 0 :(得分:1)

我建议将所有单个数据项放在一个列表中,并将 保存为JSON文件。

data = [x for x in json_seq(url_seq(limit=100))]
with open('data.json', 'w') as f:
    json.dump(data, f)

稍后,您可以使用pd.read_json阅读JSON文件:

df = pd.read_json('data.json')

如果您真的想节省内存,请在item次写入之间添加左右括号。

with open('data.json', 'w') as f:
    f.write('[')
    for item in json_seq(url_seq(limit=100)):
        f.write(json.dumps(item) + ',')
    f.write(']')