我有一个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
我该如何解决?
答案 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)