【问题标题】:Error: iterator should return strings, not _io.TextIOWrapper (did you open the file in text mode?)错误:迭代器应该返回字符串,而不是 _io.TextIOWrapper(您是否以文本模式打开文件?)
【发布时间】:2018-03-24 19:03:11
【问题描述】:

我从 python 3.6.1 开始,我想使用以下代码读取 csv 文档:

f = open ("mon_fichier.csv"),"r"

import csv

lecteur = csv.DictReader(f,delimiter=";")

for ligne in lecteur :
    print (ligne)

f.close()

我收到此错误消息

Error: iterator should return strings, not _io.TextIOWrapper (did you open the file in text mode?)

你知道为什么吗?

【问题讨论】:

  • StackOverflow 上的问题应该是英文的!

标签: python csv


【解决方案1】:

注意你的语法:

f = open ("mon_fichier.csv"),"r"

表示type(f) == tuple,即它是一个带有文件句柄和"r" 字符串的二元组。你的意思是:

f = open("mon_fichier.csv", "r")

或者,由于"r" 是默认模式,您可以这样做:

f = open("mon_fichier.csv")

确实,使用上下文管理器是最佳实践,因此您应该这样做:

import csv

with open("mon_fichier.csv") as f:
    lecteur = csv.DictReader(f, delimiter=";")
    for ligne in lecteur :
        print(ligne)

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2023-01-22
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2021-03-21
    • 2013-09-24
    相关资源
    最近更新 更多