Pythonically将头添加到csv文件

Pythonically将头添加到csv文件,python,csv,header,Python,Csv,Header,我编写了一个合并两个csv文件的Python脚本,现在我想在最终的csv文件中添加一个头文件。我尝试按照报告的建议进行操作,但得到了以下错误:预期的字符串,找到了float。解决这一问题的最佳方法是什么 以下是我正在使用的代码: import csv with open('combined_file.csv', 'w', newline='') as outcsv: writer = csv.DictWriter(outcsv, fieldnames = ["Date", "tempe

我编写了一个合并两个csv文件的Python脚本,现在我想在最终的csv文件中添加一个头文件。我尝试按照报告的建议进行操作,但得到了以下错误:
预期的字符串,找到了float
。解决这一问题的最佳方法是什么

以下是我正在使用的代码:

import csv

with open('combined_file.csv', 'w', newline='') as outcsv:
    writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
    writer.writeheader()

    with open('t1.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows(row + [0.0] for row in reader)

    with open('t2.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
DictWriter()
类要求每行使用字典。如果您只想编写一个初始标题,请使用常规的
csv.writer()
并为标题传入一个简单的行:

import csv

with open('combined_file.csv', 'w', newline='') as outcsv:
    writer = csv.writer(outcsv)
    writer.writerow(["Date", "temperature 1", "Temperature 2"])

    with open('t1.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows(row + [0.0] for row in reader)

    with open('t2.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
另一种方法是在跨数据复制时生成字典:

import csv

with open('combined_file.csv', 'w', newline='') as outcsv:
    writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
    writer.writeheader()

    with open('t1.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows({'Date': row[0], 'temperature 1': row[1], 'temperature 2': 0.0} for row in reader)

    with open('t2.csv', 'r', newline='') as incsv:
        reader = csv.reader(incsv)
        writer.writerows({'Date': row[0], 'temperature 1': 0.0, 'temperature 2': row[1]} for row in reader)

在执行循环之前,只需添加一行。此行包含 您的CSV文件头名称

schema = ['a','b','c','b']
row = 4
generators = ['A','B','C','D']
with open('test.csv','wb') as csvfile:    
     writer = csv.writer(csvfile, delimiter=delimiter)
# Gives the header name row into csv
     writer.writerow([g for g in schema])   
#Data add in csv file       
     for x in xrange(rows):
         writer.writerow([g() for g in generators])
这对我有用

header = ['row1', 'row2', 'row3']
some_list = [1, 2, 3]
with open('test.csv', 'wt', newline ='') as file:
    writer = csv.writer(file, delimiter=',')
    writer.writerow(i for i in header)
    for j in some_list:
        writer.writerow(j)

这不是很简单吗,若我们当时正在创建一个文件,若我们不向它添加数据,那个么我们只添加头文件

  conso_file_path = 'your_folder_path\your_file.csv'
    # Create File
    if not os.path.exists(conso_file_path):
        print("No File")
        header = ['col_name 1', 'col_name 1', 'col_name 3', 'col_name4']
        with open(conso_file_path, 'w') as f:
            writer = csv.writer(f)
            writer.writerow(header)

您正在向csv文件中写入多少列?请在问题1中具体说明。输入文件2的格式。输出format@nio:发布的代码中有很大一部分来自于为什么文件以二进制模式打开?csv文件显然是文本格式,而不是二进制格式。这可能会在Windows系统上造成问题。@pcarter:在Python 2上,在Windows上以文本模式打开文件会触发与CSV格式不兼容的换行翻译;因此,
csv
模块希望直接处理换行符(根据需要使用
\n
\r\n
),这意味着您必须以二进制模式打开文件。请参阅:如果csvfile是文件对象,则必须在有区别的平台上使用“b”标志打开它。。在Python3上,您将使用。这很有效,很有趣:当文件在
a
模式下打开时,
writer.writeheader()
将写入两次头,尽管头行已经写入了@洛雷托帕里斯:当然有。附加到现有文件时,不要使用
writer.writeheader()
csv.writer()
对象无法检测到您正在将数据写入现有文件。在Python 3中,需要使用“w”选项打开文件,二进制文件将无法工作。在答复中提及这一点将是有益的。我在这里发现了这个区别:使用file作为变量不是一个好主意。第3行。请改用csvfile或其他文件。@Gorgonzola它只是StackOverflow答案中的一个语法名称。。。它可能是香蕉,但在这种情况下,它只是一个文件