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电子表格中的信息,并对它进行计算。从异步社区本书对应页面可以下载这个完整的程序。