Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CSV阅读器不';不要跳过第一行_Python_Python 2.7_Csv - Fatal编程技术网

Python CSV阅读器不';不要跳过第一行

Python CSV阅读器不';不要跳过第一行,python,python-2.7,csv,Python,Python 2.7,Csv,我正在尝试从一个CSV文件读取和写入第二个CSV文件。问题是,在读取输入CSV文件之前,我需要知道该文件中有多少行 with open('csv/file.csv') as f: with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'wb') as o: reader = csv.DictReader(f) reader.fieldnames.append('VA

我正在尝试从一个CSV文件读取和写入第二个CSV文件。问题是,在读取输入CSV文件之前,我需要知道该文件中有多少行

with open('csv/file.csv') as f:
    with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'wb') as o:
        reader = csv.DictReader(f)
        reader.fieldnames.append('VAT added')
        rows = sum(1 for _ in reader)
        f.seek(0)
        writer = csv.DictWriter(o, fieldnames=reader.fieldnames)
        writer.writeheader()
        for n,line in enumerate(reader):
            print line
            print '{} lines remaining'.format(rows-n)
            code = line['number'].strip()
            ...
            writer.writerow(line)
问题是它读取
标题
行,因此在第一次迭代后返回错误。问题在哪里

问题。。。它在第一次迭代后返回错误

我不知道你会犯什么错误,但我会 类型错误:“str”不支持缓冲区接口

原因是这行代码:

with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'wb') as o:
不要在二进制模式下打开
csv
文件
wb
,更改为
w
,例如

with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'w') as o:

使用Python:3.4.2测试

您能准确地发布您得到的错误吗?您可以跳过第一次迭代。如果您对n执行了
,请在enumerate(reader)中执行第行操作:如果n>0:
?pandas的
read\u csv
函数有一个
skiprows
header
参数,这两个参数都应该可以帮助您。我不确定我是否理解您的错误描述。标题和问题主体似乎有所不同。一个非常明显的问题是,当您计算
读取器
生成器的长度时,它正在耗尽资源(不知道
file.seek
对您没有帮助)。一旦你这样做了,你就不能再重复它了。若要避开此问题,请将其转换为列表。然后你可以在上面调用
len
,并对它进行迭代,直到你的心内容。这是假设它不是一个很大的文件。在这种情况下,创建一个列表可能不是一个好主意。当我运行它时,它将运行到完成。我认为,如果您能告诉我们由哪一行发出的错误,换句话说,复制堆栈跟踪,会有所帮助。问题可能出在您的数据中:例如,如果您的csv没有标题为“number”的列,您将得到一个键错误。