写和阅读词典Python 3

时间:2014-01-12 11:56:34

标签: python json dictionary weather

我想将天气信息写入文件并使用其他脚本读取。目前我一直在写文件。 原始代码:

#!/usr/bin/env python3
from pprint import pprint
import pywapi
import pprint
pp = pprint.PrettyPrinter(indent=4)

steyregg = pywapi.get_weather_from_weather_com('AUXX0022')


pp.pprint(steyregg)

这给我这样的输出:

> {   'current_conditions': {   'barometer': {   'direction': u'falling
> rapidly',
>                                                'reading': u'1021.33'},
>                               'dewpoint': u'0',
>                               'feels_like': u'2',
>                               'humidity': u'67',
>                               'icon': u'32',
>                               'text': u'W'}},.......

所以我试过

#!/usr/bin/env python3
from pprint import pprint
import pywapi
import pprint
pp = pprint.PrettyPrinter(indent=4)

steyregg = pywapi.get_weather_from_weather_com('AUXX0022')

with open('weather.txt', 'wt') as out:
    pp.pprint(steyregg, stream=out)

但这会导致错误:

pprint() got an unexpected keyword argument 'stream'

我做错了什么?一旦它在另一个python脚本中工作,我怎么能读取wheater.txt?或者是否有更优雅的方式来捕获这样的数据并在其他地方使用它?

先谢谢

1 个答案:

答案 0 :(得分:0)

PrettyPrinter类的pprint 方法不接受stream关键字参数。在此行中创建对象时提供流:

pp = pprint.PrettyPrinter(indent=4)

或使用函数 pprint.pprint,它接受​​stream关键字参数。

这就是错误的原因。一个更基本的问题是:为什么你使用pprint模块,当问题​​的标题是“写和读xml Python 3”? pprint模块不生成XML。有关使用python处理XML的一些想法,请参阅https://wiki.python.org/moin/PythonXml

另请注意pywapi.get_weather_from_weather_com返回python字典。该函数已将XML数据转换为字典,因此您不必读取任何XML。请参阅此example(如果您还没有)。

您可以将字典另存为JSON文件。

import json

with open('weather.txt', 'wt') as out:
    json.dump(steyregg, out, indent=4)