Python CSV写入以注释行开头的文件

Python CSV写入以注释行开头的文件,python,python-2.7,Python,Python 2.7,我需要创建一个包含csv数据(或tsv,更确切地说)的文件,该数据由多条注释(通过“#”)行(第三方程序的处理指令)预先添加 我尝试的是在附加模式下打开一个带有注释的模板文件,并将csvrows写入其中: ... with open('template.txt', 'a+') as csvfile: for record in records: csvWriter = csv.writer(csvfile, delimiter='\t',quotechar

我需要创建一个包含csv数据(或tsv,更确切地说)的文件,该数据由多条注释(通过“#”)行(第三方程序的处理指令)预先添加

我尝试的是在附加模式下打开一个带有注释的模板文件,并将csvrows写入其中:

...
with open('template.txt', 'a+') as csvfile:
        for record in records:
            csvWriter = csv.writer(csvfile, delimiter='\t',quotechar='"', quoting=csv.QUOTE_MINIMAL)
            csvWriter.writerow([record['Id'], record['Email']])
....    

这不起作用(无论我使用哪个标志打开文件)。它不会覆盖已注释的行,但会跳过与注释数量相同的csv行


所以这显然不是怎么做的。那么,在Python(2.7)中,创建一个混合了非csv数据和csv数据的文件(我希望我的csv字段被正确引用,所以我不想对我的csv行使用简单的写入操作)的正确方法是什么呢?

你不必每次迭代都创建一个新的
csv.writer
,它只是
文件的包装器。write

import csv
with open("template.txt", "wt") as fp:

    fp.write("# first commented line\n")
    fp.write("# second commented line\n")

    writer = csv.writer(fp)

    for record in records:
        writer.writerow([record["Id"], record["Email"]])

    fp.write("# a commented line among the records\n")

    for record in more_records:
        writer.writerow([record["Id"], record["Email"]])

“它跳过的csv行数与评论数一样多。”真的吗?不适合我。真的无法想象。什么操作系统?(并不是说@pgy的答案不那么正确,但上面的内容在linux上确实对我有用)。我承认我在做傻事,但问题就在那里。这是MacOS10.11.2上的Python2.7,模板文件是在同一个python脚本中创建的(从另一个文件复制)。我能提供更多的信息让这个问题更容易回答吗?谢谢你指出我不需要在每个新的迭代中创建一个新的csvfilewriter。我真傻。但我假设csvwriter在包含分隔符和引号的情况下会正确地引用csv字段(而简单的写入不会)?如果不是,csv编写器是用于什么的?
csv.writer
是一个围绕
文件的包装器。write
管理分隔符和引号(如果需要),但没有任何东西阻止您使用底层(即包装的)文件描述符。