我有一个名为Database的类,它在' a +'中打开一个文件。模式(用于阅读和追加)。它还有使用csv库从文件中追加和读取的方法,如下所示:
class Database():
def __init__(self, db_filename, *args, **kwargs):
self._db_file = open(db_filename, 'a+', newline='')
self._csv_writer = csv.DictWriter(
self._db_file, fieldnames=self.__FIELDNAMES)
self._csv_reader = csv.DictReader(
self._db_file, fieldnames=self.__FIELDNAMES)
# append
def save(self, data):
self._csv_writer.writerow(data)
# read
def load(self):
data = []
for row in self._csv_reader
data.append(row)
return data
问题是save
方法工作正常,但load
没有。 self._csv_reader 为空。
答案 0 :(得分:1)
使用a+
模式打开文件时,文件流将位于文件末尾。在创建f.seek( 0 )
之前,请调用open( ... )
,其中f是使用DictReader
创建的文件对象。有关此问题的详细讨论,请参阅this question。