python-3.x - 通过方法读取 CSV 文件时出现奇怪的错误
问题描述
所以,我的目录中有一个 CSV 文件 (league.csv'),我想通过 Python 访问它。
当我这样做时:
with open('league.csv', 'r') as csvFile:
csvReader = csv.reader(csvFile)
next(csvReader)
for line in csvReader:
print(line[0])
它工作得很好。但是当我试图把它变成一个函数时它不起作用:
def createLeague(csv):
with open(csv, 'r') as csvFile:
csvReader = csv.reader(csvFile)
next(csvReader)
for line in csvReader:
print(line[0])
return
如果我使用以下方法调用它:
createLeague('league.csv')
我得到错误
csvReader = csv.reader(csvFile)
AttributeError: 'str' object has no attribute 'reader'
这是没有意义的,因为 type(csvFile) 不是 str,我做的和上面的完全一样吗?
谁能帮帮我,我真的很沮丧!
谢谢!
解决方案
查看内联注释出了什么问题。
import csv # "csv" variable at "with open..." overwrites
# cvs module.
from csv import reader # required to use the function "reader" from csv.
def createLeague(csv): # "csv" variable overwrites cvs module.
with open(csv, 'r') as csvFile:
csvReader = reader(csvFile) # skip the csv. here and it works for you.
next(csvReader)
for line in csvReader:
print(line[0])
return
或者:
下面更改csv 文件名的示例不会覆盖您刚刚加载的csv 模块。混淆触发错误发生。
import csv
#from csv import reader
def createLeague(csv_file):
with open(csv_file, 'r') as csvFile: # changed variable "csv" filename.
csvReader = csv.reader(csvFile)
next(csvReader)
for line in csvReader:
print(line[0])
return
推荐阅读
- c++ - 使用 std::string.find() 将我带到 std::out_of_range
- python - Moviepy 在连接后的前几帧后冻结
- javascript - 如何使socket.io只连接一次
- tcl - 为什么我不能在 tcl 中访问正确的 pi 值?
- css - 添加类以选择标签
- python - numpy 数组字典到(转置)csv
- javascript - 您应该如何存储多行文本文件?作为文本文件还是js文件?
- javascript - 使用 Axios 模块设置 Nuxt 项目
- linux - Shell 脚本回显问题
- kubernetes - 如何解决 Kubernetes 中的调度程序和控制器管理器不健康状态