从列表中写入csv文件

时间:2018-06-26 19:54:50

标签: python csv class oop

我正在编写一个应使用定界符','

编写csv文件的类。
class DelFile(WriteFile):
    def __init__(self, TextFile):
        self.TextFile = TextFile

    def write(self, Mssg, Delimiter):
        with open(self.TextFile, "w+") as csv_file:
            writer = csv.writer(csv_file, delimiter=',')
            for item in Mssg:
                writer.writerow(item)

我在这里称呼它

c = DelFile('text3.csv')
c.write(['a','b','c'], ',')

结果,我得到了:

enter image description here

我想将内容写为行而不是列 a, b, c.,而且我不明白为什么结果会跳线。任何帮助深表感谢!

1 个答案:

答案 0 :(得分:0)

如上所述,在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

注意:这种方法效率很低,因为您实际上在为每一行打开和附加文件。如果只写几行,这可能没问题,但是更好的方法也许是保持文件打开直到删除类。