当前位置:嗨网首页>书籍在线阅读

14-第3步_将结果写入文件

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

第3步:将结果写入文件

for 循环结束后, countyData 字典将包含所有的人口和普查区信息,以县和州为键。这时,你可以编写更多代码,将数据写入文本文件或另一个Excel电子表格。目前,我们只是使用 pprint.pformat() 函数,将变量字典的值作为一个巨大的字符串写入文件census2010.py。在程序的末尾加上以下代码(确保它没有缩进,这样它就在 for 循环之外):

#! python 3
# readCensusExcel.py - Tabulates population and number of census tracts for
# each  county.
--snip--
for row in range(2, sheet.max_row + 1):
--snip--
# Open a new text file and write the contents of countyData to it.
print('Writing results...')
resultFile = open('census2010.py', 'w') 
resultFile.write('allData = ' + pprint.pformat(countyData)) 
resultFile.close()
print('Done.')

pprint.pformat() 函数产生一个字符串,它本身就是格式化好的、有效的Python代码。将它输出到文本文件census2010.py,你就通过Python程序生成了一个Python程序。这看起来可能有点复杂,但好处是你现在可以导入census2010.py,就像导入任何其他Python模块一样。在交互式环境中,将当前工作目录变更到新创建的census2010.py文件所在的文件夹,然后导入它:

>>> import os
>>> import census2010
>>> census2010.allData['AK']['Anchorage']
{'pop': 291826, 'tracts': 55}
>>> anchoragePop = census2010.allData['AK']['Anchorage']['pop']
>>> print('The 2010 population of Anchorage was ' + str(anchoragePop))
The 2010 population of Anchorage was 291826

readCensusExcel.py程序是可以扔掉的代码:当你把它的结果保存为census2010.py之后,就不需要再次运行该程序了。任何时候,只要需要县的数据,就可以执行 import census2010 来获得。

手动计算这些数据可能需要数小时,而使用这个程序只要几秒。利用 openpyxl ,可以毫无困难地提取保存在Excel电子表格中的信息,并对它进行计算。从异步社区本书对应页面可以下载这个完整的程序。