如何解决添加到CSV文件的问题?

时间:2020-06-01 23:15:16

标签: python python-3.x csv

我有一个csv文件,其中包含400多个行和2列,其中包含电影及其类型。 我想在现有CSV文件的末尾添加新电影和新类型。

我写了这个:

numChild2

运行此文件后打开文件时,我看到changes被添加到最后一行的同一行的新列中的列import csv with open('/Users/Desktop/okok.csv','a') as csvfile: writer = csv.writer(csvfile) writer.writerow(["newFilm", "newGenre"]) newFilm

我想要这样:

genre

我明白了:

newGenre

我该如何解决?

1 个答案:

答案 0 :(得分:0)

okok.csv不是有效的CSV文件。 Python的csv模块假定CSV文件中的每一行都以换行符终止。 okok.csv不是,因此将新行追加到旧行。垃圾进,垃圾出。

作者本身无法倒回并检查有效性。但是,如果您有不遵守规则的CSV上游编写者,则可以编写自己的例程来修复此常见错误。在打开进行常规更新之前先调用它。

def fix_csv_file_ending(filename):
    with open(filename, "ab+") as fileobj:
        fileobj.seek(-1, 2)
        if fileobj.read() != b"\n":
            fileobj.write(b"\r\n")

# test
lines = b'good\r\ngood\r\n\bad'
open('test.csv', 'wb').write(lines)
fix_csv_file_ending('test.csv')
want = lines + b'\r\n'
got = open('test.csv', 'rb').read()
assert want == got, 'first test'
fix_csv_file_ending('test.csv')
got = open('test.csv', 'rb').read()
assert want == got, 'second test'
print(got)