【发布时间】:2018-12-09 00:06:54
【问题描述】:
我已经阅读了关于 SO 和其他不同地方的文档和一些额外的帖子,但我不太明白这个概念:
当您调用csvFilename = gzip.open(filename, 'rb') 然后reader = csv.reader(open(csvFilename)) 时,reader 不是有效的 csv 文件吗?
我正在尝试解决下面概述的问题,并在第 41 行和第 7 行(在下面突出显示)出现coercing to Unicode: need string or buffer, GzipFile found 错误,这使我相信 gzip.open 和 csv.reader 无法正常工作以前想的。
我要解决的问题
我正在尝试将results.csv.gz 转换为results.csv,以便我可以将results.csv 转换为python 字典,然后将其与另一个python 字典结合。
文件 1:
alertFile = payload.get('results_file')
alertDataCSV = rh.dataToDict(alertFile) # LINE 41
alertDataTotal = rh.mergeTwoDicts(splunkParams, alertDataCSV)
调用文件 2:
import gzip
import csv
def dataToDict(filename):
csvFilename = gzip.open(filename, 'rb')
reader = csv.reader(open(csvFilename)) # LINE 7
alertData={}
for row in reader:
alertData[row[0]]=row[1:]
return alertData
def mergeTwoDicts(dictA, dictB):
dictC = dictA.copy()
dictC.update(dictB)
return dictC
*edit: 也请原谅我在 Python 中的非 PEP 风格命名
【问题讨论】:
-
顺便说一句,如果你不使用整个字典,你可以使用
ChainMap并保存复制 -
感谢您的帮助,但我相信 ChainMap 是 Python 3 的一个功能,遗憾的是我无法在这个特定项目中使用它。
标签: python python-2.7 csv dictionary gzip