文章为本人所总结,用于日常学习。但也希望各位看官朋友们如果觉得有帮助的话,可以不吝三连,不胜感激!如果发现侵权或不当之处,请在评论区指出,我会尽快处理。
目录
前言
最近做项目,由于经常要读写一些文件并进行处理,总是需要上网搜索相关读写代码,效率有些低。故在此总结一下常见文件的python读写方式,形成一个工具库,便于自己使用
一、json文件读写
1.json读取文件
load()读取文件
with open(”文件名“, 'r', encoding='utf-8') as f:
result = json.load(f)
逐行读取文件,采用loads()将JSON对象解码成Python对象
with open("文件名") as f:
line=f.readline():
result=json.loads(line)
2.json写入文件
dump()将Python对象转换成JSON对象并写入文件
examples = [{"问题": "abcd", "回答": "a"}, {"问题": "cdef", "回答": "d"}]
with open('文件名', 'w', encoding='utf-8') as f: #采用encoding=’utf-8‘写入中文
json.dump(examples, f, ensure_ascii=False, indent=4) #采用ensure_ascii避免写入时转成ascii码,indent自动缩进
'''
output:
[
{
"问题": "abcd",
"回答": "a"
},
{
"问题": "cdef",
"回答": "d"
}
]
'''
dumps():将Python对象转换成 JSON对象
这种主要是用于先把list中每个元素转成JSON对象再逐行写入文件
二、csv文件读写
csv文件常用的就是csv库和pandas库
1.csv读写
csv读取文件:
import csv
with open('文件名','r') as csvfile:
data = csv.DictReader(csvfile) #读取出来是一个list,每个元素是一个dict
#逐行读取
for line in data:
#取某一行中列名为‘score’的元素
score = line['score']
csv写入文件:
import csv
with open('文件名', 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name'] #列名
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
2.pandas读写
用pandas库读写文件是更方便的操作,不过需要对DataFrame数据结构有一定了解
pandas读取文件:
import pandas as pd
datas = pd.read_csv('文件名') #Dataframe数据类型
下面是一些读取后的常见操作,这里只介绍一些我碰到的。
逐行遍历:
data_list = []
for i, row in datas.iterrows():
score = row['score'] #每一行列名为’score‘的元素
data_list.append(row)
过滤操作,得到所有某一列中元素大于某个值的数据:
filter_data = datas[datas["score"]>=4] #取出所有’score‘列元素大于4的数据
pandas写入文件:
需要先将数据变为DataFrame形式
data = {'row1':[1,2,3,'abcd'],'row2':[4,5,6,'efgh']}
#需要先将数据变成DataFrame形式
data_df = pd.DataFrame(data)
data_df.to_csv('filename', index=False, header=True) #index表示设定是否需要行索引,设定为FALSE表明不需要,就不会生成新的行索引; header表明是否需要列索引,设定为True(默认设置)表明需要,那么之前df的列标签就会保存。
三、excel文件读写
excel文件读写主要有两种方式:xlrd读xlwt写,pandas库读写
1、xlrd和xlwt读写文件
xlrd读取excel文件:
import xlrd
workbook = xlrd.open_workbook("文件名")
worksheet = workbook.sheet_by_index(0) #读取第一张表
data = worksheet.col_values(4) #取第5列的数据,list
xlwt写入excel文件 :
wb = xlwt.Workbook()
ws = wb.add_sheet('A') # 增加sheet
ws.write(0, 0, 'abcd') #第0行第0列写入‘abcd’
ws.write(1, 0, 'bcde')
wb.save('文件名')
xlwt写入文件需要一格一格写,不太方便,用pandas更好
2、pandas读写文件
pandas读取文件:
import pandas as pd
data_frame = pd.read_excel('文件名', sheet_name='A') #读取表名为A,数据形式为DataFrame
user_names = data_frame["UserName"] #取出名为'UserName'的一列数据
#逐行读取
for row in data_frame.index.values:
doc = dict()
doc['key1'] = data_frame.iloc[row, 0]
doc['key2'] = data_frame.iloc[row, 1]
pandas写入文件:
writer = pd.ExcelWriter('文件名')
data = {'user_name': ['Mike', 'Tom'], 'score': ['99', '79']}
sname = 'A' #表名
df = DataFrame(data) #转换成DataFrame
df.to_excel(writer, sheet_name=sname) 写入excel
总结
以上是对于常见文件的一些读写处理,也包括读取后一些简单的操作介绍,意在提供一个比较便捷的工具库,肯定有不够全面之处,日后如果再进行相关工作,也会进行补充。希望各位看官朋友们如果觉得有帮助的话,可以不吝三连,不胜感激!如果发现侵权或不当之处,请在评论区指出,我会尽快处理。