Python数据分析之合并多个CSV文件

**

一.常规读取文件

**

import os,csv,sys,glob
#添加文件
sys.argv.append('./')
sys.argv.append('b_test1.csv')
sys.argv.append('b_test2.csv')
sys.argv.append('b_test3.csv')
#定义一个开始读取的路径
input_path=sys.argv[1]
output_file=sys.argv[2]
#假设读取的文件是从第一个文件开始
first_file=True
for input_file in glob.glob(os.path.join(input_path,'*.csv')):
    print(os.path.basename(input_file))
    with open(input_file,'r',newline='')as csv_in_file:
        with open(output_file,'a',newline='')as csv_out_file:
          filereader=csv.reader(csv_in_file)
          filewriter=csv.writer(csv_out_file)
          if first_file:
              for row in filereader:
                  filewriter.writerow(row)
              first_file=False
          else:
              header=next(filereader,None)
              for row in filereader:
                  filewriter.writerow(row)

    pass

二.用Pandas库解决会更方便,显示更清晰简洁

import pandas as pd
import glob
import os
import sys
#添加文件
sys.argv.append('./')
sys.argv.append('b_test1.csv')
sys.argv.append('b_test2.csv')
sys.argv.append('b_test3.csv')
#定义一个开始读取的路径
input_path=sys.argv[1]
output_file=sys.argv[2]
#通过os找到所有文件的路径
all_files=glob.glob(os.path.join(input_path,'*.csv'))
#定义一个空的列表
alldates=[]
#把对应目录里面的文件依次循环读出
for file in all_files:
    data_frame=pd.read_csv(file,index_col=None)
    alldates.append(data_frame)
concats=pd.concat(alldates,axis=0,ignore_index=True)
concats.to_csv(output_file,index=False)

你可能感兴趣的:(Python数据分析之合并多个CSV文件)