私はPython(そしてプログラミング全般)の非常に新しいです。下に貼り付けられたコードは、既存のcsvを編集するためのものです。しかし、私はエラーが発生しています。 エラーは、私が答えを探すためにしようとしていcsvファイルの読み書き中にエラーが発生しました。 strとバイナリの間の型の不一致
Traceback (most recent call last):
File "C:\Users\Samsung Pc\Desktop\hungrypy1\hungry_data.py", line 34, in <module>
writer.writeheader()
File "C:\Users\Samsung Pc\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 144, in writeheader
self.writerow(header)
File "C:\Users\Samsung Pc\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 155, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "C:\Users\Samsung Pc\AppData\Local\Programs\Python\Python36-32\lib\tempfile.py", line 483, in func_wrapper
return func(*args, **kwargs)
TypeError: a bytes-like object is required, not 'str'
[Finished in 0.5s]
であり、バイナリから文字列への型の不一致のようです。私は "rb"の代わりに "r"としてファイルを開こうとしましたが、同じエラーです。助けてください。コードは以下の通りです。
import csv
import shutil
from tempfile import NamedTemporaryFile
def get_length(file_path):
with open("data.csv", "r") as csvfile:
reader = csv.reader(csvfile)
reader_list = list(reader)
print(reader_list)
return len(reader_list)
def append_data(file_path, name, email):
fieldnames = ['id', 'name', 'email'
next_id = get_length(file_path)
with open(file_path, "a", newline = '') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({
"id": next_id,
"name": name,
"email": email,
})
append_data("data.csv", "Niraj", "[email protected]")
filename = "data.csv"
temp_file = NamedTemporaryFile(delete = False)
with open(filename, "r") as csvfile, temp_file:
reader = csv.DictReader(csvfile)
fieldnames = ['id','name','email','amount','sent']
writer = csv.DictWriter(temp_file, fieldnames = fieldnames)
writer.writeheader()
for row in reader:
writer.writerow({
"id" : row["id"],
"name" : row["name"],
"email": row["email"],
"amount": "1234.34",
"sent": "",
})
#shutil.move(temp_file.name. filename)
ようこそスタックオーバーフロー!あなたに素晴らしい答えを与えるために、もしあなたがまだ持っていなければ、あなたが[尋ねる]を一目で把握すれば、私たちを助けるかもしれません。あなたが[mcve]を提供できるなら、それは役に立つかもしれません。 – Mat