2014-03-03 88 views
2

我有一个项目即时通讯工作试图将一个表移动到另一个python中我需要它读取两个文件,并将它们写入sample_FACTS_bronto_import_add.csv中的特定位置,如果这是可能的话。这是我的代码到目前为止是在python中写入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) 
+3

你的问题是什么?你所做的只是显示一些代码。 –

+0

即时通讯问问是否有办法解决此问题的写入程序部分到哪里将写入第一个文件的内容到新的一个,因为截至目前它只写出一行 – HatterX

+0

你想要做什么? (1)将'Franchise_Name_Scrub_List.csv'复制到'sample_FACTS_bronto_import_add.csv';覆盖(2)将'Franchise_Name_Scrub_List.csv'的内容附加到'sample_FACTS_bronto_import_add.csv'(3)其他东西 – falsetru

回答

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) 
+0

工作很好,谢谢你somuch – HatterX