我一直在学习和练习python 我在程序中发现一个错误,但无法解决。我想返回从csv文件检索的列表。我尝试了下面的代码,它返回了一个错误
import csv
def returnTheRowsInTheFile(fileName):
READ = 'r'
listOfRows = []
try:
with open(fileName, READ) as myFile:
listOfRows = csv.reader(myFile)
return listOfRows
except FileNotFoundError:
print('The file ' + fileName + ' is not found')
except:
print('Something went wrong')
finally:
#myFile.close()
print()
def main():
fullString = returnTheRowsInTheFile('ABBREVATIONS.CSV')
for eachRow in fullString:
print(eachRow)
return
main()
错误是
Traceback (most recent call last): File "C:\Users\santo\workspace\PyProject\hello\FinalChallenge.py", line 36, in main() File "C:\Users\santo\workspace\PyProject\hello\FinalChallenge.py", line 32, in main for eachRow in fullString: ValueError: I/O operation on closed file.
解决这个问题的简单方法是从函数返回一个列表。我知道您分配了
listOfRows = []
,但当您分配listOfRows = csv.reader(myFile)
时,它被覆盖了因此,简单的解决方案是:
您还应该阅读pep8,这是Python的样式指南;以了解如何命名变量和函数
正如JulienD已经指出的,当您试图从文件中读取行时,该文件已被关闭。您可以使用以下示例消除此异常:
更新
顺便说一句,处理异常的方式使得调试非常困难。我建议这样做
这样至少可以看到错误消息
当您使用
with open
时,它会在上下文结束时关闭文件。现在listOfRows
是返回类型csv.Reader
,然后是fullString
(不是列表)。您正在尝试对其进行迭代,这似乎是对已关闭的文件对象进行迭代相关问题 更多 >
编程相关推荐