使用Python将文件打印到文件中

时间:2012-02-07 02:37:47

标签: python json twitter pretty-print

课程项目涉及解析Twitter JSON数据。我正在获取数据并将其设置到文件中没有太多麻烦,但它只是一行。这对于我正在尝试的数据操作很好,但是文件非常难以阅读,我无法很好地检查它,使得为数据操作部分编写代码非常困难。

有没有人知道如何从Python中做到这一点(即不使用命令行工具,我无法工作)?到目前为止,这是我的代码:

header, output = client.request(twitterRequest, method="GET", body=None,
                            headers=None, force_auth_header=True)

# now write output to a file
twitterDataFile = open("twitterData.json", "wb")
# magic happens here to make it pretty-printed
twitterDataFile.write(output)
twitterDataFile.close()

注意我很感谢有人向我指出simplejson文档等等,但正如我所说,我已经看过并继续需要帮助。一个真正有用的回复将比那里的例子更详细和更具说明性。 感谢

同时 在Windows命令行中尝试:

more twitterData.json | python -mjson.tool > twitterData-pretty.json

结果如下:

Invalid control character at: line 1 column 65535 (char 65535)

我会给你我正在使用的数据,但它非常大,你已经看过我用来制作文件的代码了。

8 个答案:

答案 0 :(得分:59)

header, output = client.request(twitterRequest, method="GET", body=None,
                            headers=None, force_auth_header=True)

# now write output to a file
twitterDataFile = open("twitterData.json", "w")
# magic happens here to make it pretty-printed
twitterDataFile.write(simplejson.dumps(simplejson.loads(output), indent=4, sort_keys=True))
twitterDataFile.close()

答案 1 :(得分:51)

您可以解析JSON,然后使用这样的缩进再次输出:

import json
mydata = json.loads(output)
print json.dumps(mydata, indent=4)

有关详细信息,请参阅http://docs.python.org/library/json.html

答案 2 :(得分:32)

import json

with open("twitterdata.json", "w") as twitter_data_file:
    json.dump(output, twitter_data_file, indent=4, sort_keys=True)

如果您以后不想解析字符串,则不需要json.dumps(),只需使用json.dump()。它也更快。

答案 3 :(得分:12)

您可以使用python的json模块进行打印。

>>> import json
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
{
    "4": 5,
    "6": 7
}

所以,在你的情况下

>>> print json.dumps(json_output, indent=4)

答案 4 :(得分:1)

如果您已经有想要格式化的JSON文件,则可以使用以下方法:

    with open('twitterdata.json', 'r+') as f:
        data = json.load(f)
        f.seek(0)
        json.dump(data, f, indent=4)
        f.truncate()

答案 5 :(得分:1)

如果要生成新的* .json或修改现有的josn文件,请使用“ indent”参数获取漂亮的json格式。

import json
responseData = json.loads(output)
with open('twitterData.json','w') as twitterDataFile:    
    json.dump(responseData, twitterDataFile, indent=4)

答案 6 :(得分:0)

yarn install

答案 7 :(得分:-2)

您可以将文件重定向到python并使用该工具打开并阅读它使用更多。

示例代码为

cat filename.json | python -m json.tool | more