python实现简单文件读写函数


Posted in Python onFebruary 25, 2021

python作为脚本性语言,加上它的简便易用性。会经常当作脚本用来处理一下数据和格式。其中处理文件就是频繁用处之一。简单编写几个常用的xls和txt读写函数,以后可以快速复用。

用到xlrd库函数需要预先install

命令:pip install xlrd

直接贴源码:

#! /usr/bin/python
# coding:utf-8
 
import json
import xlrd
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
 
 
class ObjectFileReadAndWrite(object):
 
 @classmethod
 def readXlsToDict(cls, xlsFile):
 '''
 读取xls文件生成dict
 '''
 data = xlrd.open_workbook(xlsFile)
 table = data.sheet_by_index(0)
 ret = []
 keys = table.row_values(0)
 for rowNum in range(table.nrows):
 oneRowValues = table.row_values(rowNum)
 if rowNum > 0:
 d = {}
 for colIdx, key in enumerate(keys):
 d[key] = oneRowValues[colIdx]
 ret.append(d)
 return ret
 
 @classmethod
 def readXlsToList(cls, xlsFile):
 '''
 读取xls文件生成list
 '''
 data = xlrd.open_workbook(xlsFile)
 table = data.sheet_by_index(0)
 ret = []
 for rowNum in range(table.nrows):
 oneRowValues = table.row_values(rowNum)
 ret.append(oneRowValues)
 return ret
 
 @classmethod
 def readTxt(cls, txtFile, sep):
 '''
 读取txt文件
 '''
 # with + open 可保证with语句执行完毕后同时关闭打开的文件句柄。
 ret = []
 with open(txtFile, "r") as f:
 for line in f.readlines():
 line = line.strip('\n') # 去掉换行符
 listInfo = line.split(sep) # 以 sep 分割成数组
 if listInfo:
 ret.append(listInfo)
 return ret
 
 @classmethod
 def writeToJson(cls, jsonFile, ret):
 '''
 写入json文件
 '''
 with open(jsonFile, 'w') as fp:
 json.dump(ret, fp, indent=2, sort_keys=True, encoding="utf-8", ensure_ascii=False)
 
 @classmethod
 def writeFromStr(cls, filePath, s):
 '''
 string写入文件
 '''
 with open(filePath, 'w') as fp:
 fp.write(s)
 
 @classmethod
 def writeFromList(cls, filePath, wList):
 '''
 list写入文件
 '''
 with open(filePath, 'w') as fp:
 fp.writelines(wList)
 
 
if __name__ == "__main__":
 obj = ObjectFileReadAndWrite()
 # xls
 ret = obj.readXlsToDict(xlsFile='xxx.xls')
 obj.writeToJson('xxx.json', ret)
 # txt
 ret2 = obj.readTxt(txtFile='result.txt', sep=" ")
 obj.writeToJson('result.json', ret2)

因文件中有中文,中间遇到中文乱码问题

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
 
 
# encoding="utf-8", ensure_ascii=False

1、这个是由于Unicode编码与ASCII编码的不兼容造成的。
2、通常都是ascii,由此Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))

百度了下通过 以上方式 解决了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python原始套接字编程示例分享
Feb 21 Python
python中logging库的使用总结
Oct 18 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
python实现键盘控制鼠标移动
Nov 27 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
Django models filter筛选条件详解
Mar 16 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
python中reload重载实例用法
Dec 15 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 #Python
python网络爬虫实现发送短信验证码的方法
Feb 25 #Python
python openpyxl模块的使用详解
Feb 25 #Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 #Python
python如何实现递归转非递归
Feb 25 #Python
Python如何使用神经网络进行简单文本分类
Feb 25 #Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 #Python
You might like
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
两种php实现图片上传的方法
2016/01/22 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
js内置对象 学习笔记
2011/08/01 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
python引用DLL文件的方法
2015/05/11 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
主题实践活动总结
2014/05/08 职场文书
交心谈心活动总结
2015/05/11 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
Java数据结构之链表相关知识总结
2021/06/18 Java/Android