繁体   English   中英

读取CSV的所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM