今天说一下使用python读写csv文件。
读写csv文件可以使用基础python实现,或者使用csv模块、pandas模块实现。
基础python读写csv文件
读写单个CSV
以下为通过基础python读取CSV文件的代码,请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。
inputFile="要读取的文件名"
outputFile=“写入数据的csv文件名”
with open(inputFile,"r") as fileReader:
with open(outputFile,"w") as fileWriter:
for row in fileReader:
fileWriter.write(row)
读取多个csv文件并写入至一个csv文件
读写文件的代码与读写单个csv文件大致相同,但需要利用glob模块以及os模块获取需要读取的文件名。代码如下:
import os
import glob
inputPath="读取csv文件的路径"
outputFile="写入数据的csv文件名"
firstFile=True
for file in glob.glob(os.path.join(inputPath,"*.csv")):
with open(file,'r') as fileReader:
with open(outputFile,"a") as fileWriter:
if firstFile:
for row in fileReader:
fileWriter.write(row)
firstFile=False
fileWriter.write("\n")
else:
header=fileReader.readline()
for row in fileReader:
fileWriter.write(row)
通过pandas模块读写csv文件
读写单个CSV
pandas的dataframe类型有相应的方法能读取csv文件,代码如下:
import pandas as pd
inputFile="要读取的文件名"
outputFile=“写入数据的csv文件名”
df=pd.read_csv(inputFile)
df.to_csv(outputFile)
请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。
读取多个csv文件并写入至一个csv文件
import os
import glob
import pandas as pd
i
nputPath="读取csv文件的路径"
outputFile="写入数据的csv文件名"
dataFrameList=[]
for file in glob.glob(os.path.join(inputPath,"*.csv")):
df=pd.read_csv(file)
dataFrameList.append(df)
allDataFrame=pd.concat(dataFrameList,axis=0,ignore_index=True)
allDataFrame.to_csv(outputFile)
通过csv模块读写csv文件
读写单个CSV文件
代码如下:
import csv
inputFile="要读取的文件名"
outputFile=“写入数据的csv文件名”
with open(inputFile,"r",newline='') as fileReader:
with open(outputFile,"w",newline='') as fileWriter:
csvReader=csv.reader(fileReader,delimiter=',')
csvWriter=csv.writer(fileWriter,delimiter=',')
for row in csvReader:
print(row)
csvWriter.writerow(row)
读取多个csv文件并写入至一个csv文件
思路与上述用基础python读取多个csv文件大体相同,代码如下:
import csv
import glob
import os
inputPath=r"读取csv文件的路径"
outputFile=r"输出文件的路径"
firstFile=True
for file in glob.glob(os.path.join(inputFile,"*.csv")):
with open(file,"r") as fileReader:
with open(outputFile,"a") as fileWriter:
csvReader=csv.reader(fileReader)
csvWriter=csv.writer(fileWriter)
if firstFile:
for row in csvReader:
csvWriter(row)
firstFile=False
else:
header=next(csvReader,None)
for row in csvReader:
csvWriter(row)
网友评论