Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将整个JSON目录转换为Python字典以发送到MongoDB_Python_Json_Mongodb - Fatal编程技术网

Python:将整个JSON目录转换为Python字典以发送到MongoDB

Python:将整个JSON目录转换为Python字典以发送到MongoDB,python,json,mongodb,Python,Json,Mongodb,我对Python比较陌生,对MongoDB也非常陌生,因此我只关心获取文本文件并转换它们。我目前正在尝试将一组JSON格式的.txt文件移动到MongoDB中。因此,我的方法是打开目录中的每个文件,读取每一行,将其从JSON转换为字典,然后将JSON作为字典重写。然后它将以某种格式发送到MongoDB 如果我的推理有任何缺陷,请指出 目前,我写了以下内容: """ Kalil's step by step iteration / write. JSON dumps takes a python

我对Python比较陌生,对MongoDB也非常陌生,因此我只关心获取文本文件并转换它们。我目前正在尝试将一组JSON格式的.txt文件移动到MongoDB中。因此,我的方法是打开目录中的每个文件,读取每一行,将其从JSON转换为字典,然后将JSON作为字典重写。然后它将以某种格式发送到MongoDB

如果我的推理有任何缺陷,请指出

目前,我写了以下内容:

"""
Kalil's step by step iteration / write.

JSON dumps takes a python object and serializes it to JSON.
Loads takes a JSON string and turns it into a python dictionary.
So we return json.loads so that we can take that JSON string from the tweet and save it as a dictionary for Pymongo
"""

import os
import json
import pymongo

rootdir='~/Tweets'

def convert(line):
    line = file.readline()
    d = json.loads(lines)
    return d


for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        f=open(file, 'r')
        lines = f.readlines()
        f.close()
        f=open(file, 'w')
        for line in lines:
            newline = convert(line)
            f.write(newline)
        f.close()
但这不是写作。 哪一个根据经验,如果你没有得到你想要的效果,你在某处犯了错误


有人有什么建议吗?

python中的字典是程序中的一个对象,您不能将字典直接保存到文件中,除非您对其进行pickle pickle是一种将对象保存到文件中以便以后检索的方法。现在我认为更好的方法是读取文件中的行,加载将json转换为字典的json,并立即将该信息保存到mongodb中,无需将该信息保存到文件中。

python中的字典是程序中的对象,除非对字典进行pickle处理,否则无法将字典直接保存到文件中pickle是一种将对象保存到文件中以便以后检索的方法。现在我认为更好的方法是读取文件中的行,加载json,将json转换为字典,并立即将信息保存到mongodb中,无需将该信息保存到文件中。

解码json文件时,不需要逐行转换,因为解析器将为您迭代该文件,除非每行有一个json文档

加载json文档后,您将拥有一个字典,它是一种数据结构,如果不先将其序列化为特定格式(如json、yaml或其他许多格式),就无法直接写回文件。mongodb使用的格式称为bson,但您的驱动程序将为您处理编码

加载json文件并将其转储到mongo的整个过程实际上非常简单,如下所示:

import json
from glob import glob
from pymongo import Connection

db = Connection().test

for filename in glob('~/Tweets/*.txt'):
    with open(filename) as fp:
        doc = json.load(fp)

    db.tweets.save(doc)

解码json文件时,不需要逐行转换,因为解析器将为您迭代该文件,除非每行有一个json文档

加载json文档后,您将拥有一个字典,它是一种数据结构,如果不先将其序列化为特定格式(如json、yaml或其他许多格式),就无法直接写回文件。mongodb使用的格式称为bson,但您的驱动程序将为您处理编码

加载json文件并将其转储到mongo的整个过程实际上非常简单,如下所示:

import json
from glob import glob
from pymongo import Connection

db = Connection().test

for filename in glob('~/Tweets/*.txt'):
    with open(filename) as fp:
        doc = json.load(fp)

    db.tweets.save(doc)

我是个白痴。非常感谢你。我真不敢相信我没有意识到把python字典当作一块内存的逻辑上的巨大错误。我是个白痴。非常感谢你。我不敢相信我没有意识到将python字典视为一段内存在逻辑上存在巨大的、巨大的错误。