发布时间:2025-12-09 11:43:46 浏览次数:2
今天说一下使用python读写csv文件。 读写csv文件可以使用基础python实现,或者使用csv模块、pandas模块实现。
以下为通过基础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文件大致相同,但需要利用glob模块以及os模块获取需要读取的文件名。代码如下:
import osimport globinputPath="读取csv文件的路径"outputFile="写入数据的csv文件名"firstFile=Truefor 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的dataframe类型有相应的方法能读取csv文件,代码如下:
import pandas as pdinputFile="要读取的文件名"outputFile=“写入数据的csv文件名”df=pd.read_csv(inputFile)df.to_csv(outputFile)请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。
import osimport globimport pandas as pdinputPath="读取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)代码如下:
import csvinputFile="要读取的文件名"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)思路与上述用基础python读取多个csv文件大体相同,代码如下:
import csvimport globimport osinputPath=r"读取csv文件的路径"outputFile=r"输出文件的路径"firstFile=Truefor 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)