[英]Read all the rows of a CSV
嘿,我有这段代码将一个文件夹中的所有csv文件连接到一个csv文件中。 问题是if i! = 0:
这行代码if i! = 0:
if i! = 0:
防止读取每个csv的第一行(第一个csv除外)。 关于如何修改它的任何想法,以便它可以读取csv的所有行
#!/usr/bin/env python
import pandas as pd
import glob, os
import shutil
#import csv files from folder
path = r'/Users/sonia/Animalsmanage/output'
allFiles = glob.glob(path + "/*.csv")
with open('finaloutput.csv', 'wb') as outfile:
for i, fname in enumerate(allFiles):
with open(fname, 'rb') as infile:
if i != 0:
infile.readline()
outfile.write(bytearray(b'\n')) # add a empty line
shutil.copyfileobj(infile, outfile)
print(fname + " has been imported.")
如果要包括输入文件中的所有行,并用空格分隔每个输入文件的输出,则可以尝试以下操作:
with open('finaloutput.csv', 'wb') as outfile:
for i, fname in enumerate(allFiles):
with open(fname, 'rb') as infile:
shutil.copyfileobj(infile, outfile)
outfile.write(bytearray(b'\n'))
print(fname + " has been imported.")
因此,如果我有3个输入文件:
test1.csv:
name,id
dan,22
keith,23
test2.csv:
name,id
mike,33
phil,44
test3.csv:
name,id
john,5
peter,6
我的输出文件将包含:
name,id
dan,22
keith,23
name,id
mike,33
phil,44
name,id
john,5
peter,6
编辑:如果您不希望在末尾出现空白行,则可以使用以下内容代替:
numFiles = len(allFiles)
with open('finaloutput.csv', 'wb') as outfile:
for i, fname in enumerate(allFiles):
with open(fname, 'rb') as infile:
shutil.copyfileobj(infile, outfile)
if i < numFiles - 1:
outfile.write(bytearray(b'\n'))
print(fname + " has been imported.")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.