在python中编写csv

时间:2014-03-03 19:57:28

标签: python csv

我有一个项目我正在努力尝试在python中将一个表移动到另一个表我需要它来读取两个文件并将它们写入sample_FACTS_bronto_import_add.csv中的特定位置(如果可能的话)。这是我到目前为止的代码

import csv
with open('Franchise_Name_Scrub_List.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in spamreader:
         print ', '.join(row)
with open('sample_FACTS_bronto_import_add.csv', 'wb') as csvfile:
    addwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    addwriter.writerow(row)

1 个答案:

答案 0 :(得分:2)

要附加,您需要使用追加模式(a)打开文件。否则,使用写入模式(w)打开文件会截断文件。

简单地复制文件内容不需要您使用csv模块。只需使用file.writelines

即可
with open('Franchise_Name_Scrub_List.csv', 'rb') as f1, \
     open('sample_FACTS_bronto_import_add.csv', 'ab') as f2:
    f2.writelines(f1)

上面的代码假定现有文件sample_FACTS_bronto_import_add.csv以换行符结尾。如果不能保证,你需要检查一下;如果有任何内容,但最后一行没有结束,则需要添加一个。

import os

need_newline = False
try:
    with open('sample_FACTS_bronto_import_add.csv', 'rb') as f:
        f.seek(0, 2)
        if f.tell() > 0:
            f.seek(-1, 1)
            need_newline = f.read(1) != b'\n'
except IOError:
    pass

with open('Franchise_Name_Scrub_List.csv', 'rb') as f1, \
     open('sample_FACTS_bronto_import_add.csv', 'ab') as f2:
    if need_newline:
        f2.write(os.linesep.encode())
    f2.writelines(f1)