Как уже упоминалось, в Python 3.x при работе с объектами csv.writer()
файлы должны открываться с аргументом newline=''
. Во-вторых, вы передаете целую строку в функцию write()
, а writerow()
занимает целую строку, нет необходимости разбивать ее на отдельные значения с помощью цикла for. Как вы видели, это результаты в каждом значении должны быть записаны в отдельной строке. Вместо этого просто напишите всю строку следующим образом:
import csv
class DelFile():
def __init__(self, TextFile):
self.TextFile = TextFile
def write(self, row, delimiter):
with open(self.TextFile, 'w+', newline='') as csv_file:
writer = csv.writer(csv_file, delimiter=delimiter)
writer.writerow(row)
c = DelFile('text3.csv')
c.write(['a','b','c'], ',')
Это даст вам text3.csv
, содержащий:
a,b,c
Примечание. Этот подход очень неэффективен, поскольку вы эффективно открываете и добавляете файл для каждой строки. Это может быть хорошо, если вы пишете только несколько строк, но, возможно, лучшим подходом будет оставить файл открытым, пока класс не будет удален.