1. ホーム
  2. python

[解決済み] _csv.Error: iterator should return strings, not bytes (did you open file in text mode?) [duplicate].

2022-02-03 02:50:03

質問

私のcsvプログラムのスタート地点で。

import csv     # imports the csv module
import sys      # imports the sys module

f = open('Address Book.csv', 'rb') # opens the csv file
try:
    reader = csv.reader(f)  # creates the reader object
    for row in reader:   # iterates the rows of the file in orders
        print (row)    # prints each row
finally:
    f.close()      # closing

そして、そのエラーは

    for row in reader:   # iterates the rows of the file in orders
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

解決方法は?

これの代わりに(以下略)

f = open('Address Book.csv', 'rb')

こうしてください。

with open('Address Book.csv', 'r') as f:
    reader = csv.reader(f) 
    for row in reader:
        print(row)  

コンテキストマネージャーを使うと finally: f.close() なぜなら、エラー時やコンテキストの終了時に自動的にファイルをクローズするからです。