我只是尝试使用第一行作为字典的键来读取.csv,但没有成功。我的文件有两行(测试),项目由制表符分隔。
subjectID logID logTimestamp gameKey userID writer gameTime gameCode gameDesc
9991 1711774 6/13/14 E9E91B56 L11-13 general 358 1002 GAMESCRIBE_CREATED
代码:
def process_data(file_path):
users = {}
# Open the .csv file and creates a dict of actions
with open(file_path, 'rb') as csvfile:
spamreader = csv.DictReader(csvfile, delimiter='\t')
print spam reader
print spamreader.fieldnames
for row in spamreader:
print row
我一直收到这个错误:
['subjectID', 'logID', 'logTimestamp', 'gameKey', 'userID', 'writer', 'gameTime', 'gameCode', 'gameDesc']
Traceback (most recent call last):
File "logEvents.py", line 41, in <module>
process_data(logs_path)
File "logEvents.py", line 11, in process_data
for row in spamreader:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.py", line 108, in next
row = self.reader.next()
ValueError: I/O operation on closed file
我不知道自己做错了什么。
答案 0 :(得分:2)
您的实际代码中的with
块之外有with open(file_path, 'rb') as csvfile:
spamreader = csv.DictReader(csvfile, delimiter='\t')
print spamreader
for row in spamreader: # your code
print row
:
with
一旦离开{{1}}块,文件就会关闭,因此尝试从文件对象中读取失败。