Python读写文件的方式
主要用于处理csv格式文件
最普通用法
#将输入文件处理后存入新文件
def cleanWeatherTime(inputfile,outfile):
b = [] #定义一个列表存储处理后的字符串,最后统一写入新文件
file = open(inputfile,'r')
for line in file.readlines():
a = line.split(',')
#处理部分,此部分将2018-9-9 1:10:59格式转为2018-9-9格式
cut_time = a[0].split(' ')
a[0] = cut_time[0]
x = ''
for i in a:
x += i + ','
x = x[:-1]
b.append(x)
with open(outfile,'a') as out: #避免在循环中使用with
out.writelines(b) #把列表写入新文件
file.close()
**
使用pandas中read_csv挑选特定列存写入新文件:
**
def readwrite(input_file,output_file):
date_1=pd.read_csv(input_file,header=0,sep=',')
date_1[['EXEC_DATE','ABNORMAL_FLIGHT_STAT_CD']].to_csv(output_file, sep=',', header=True,index=False)
def comp(file):
list = []
data = pd.read.csv(file,header=0,sep=',')
print(data['EXEC_DATE']) #此时每行输出索引号和该列数据
for line in data['EXEC_DATE']:
if line=='2019-10-1': #此时的line只有单独数据,没有索引号
count+=1
print(count)
- read_csv返回一个Dataframe类型数据;
- header=0表示以第一行为默认索引;
- seg=","表示以“,”为分隔符;
- file[[索引表头]].to_csv(输出文件,分隔符,是否显示表头,na_rep=‘替换空值’,index是否保存行索引);语句也可以写为file.to_csv(输出文件,column=[索引表头])
使用csv.reader
import csv
def cleanAirLineTime(inputfile,outfile):
list = []
index = [0, 2, 3, 4, 5]
with open(inputfile,'r') as f: #需要先打开文件
reader = csv.reader(f)
for a in reader: #文件每行作为一个列表
str = '' #每次字符串要初始化
for i,v in enumerate(index): #需要的列
cut_time = a[v].split(' ')
a[v] = cut_time[0]
for i in range(0,9):
str += a[i] + ','
#str = str[:-1]
str += "\n"
list.append(str)
with open(outfile,'a') as out:
out.writelines(list)