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 相关文章推荐
Python3学习笔记之列表方法示例详解
Oct 06 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
pytorch 共享参数的示例
Aug 17 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python实现AI自动抠图实例解析
Mar 05 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 Python
PyMongo 查询数据的实现
Jun 28 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
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
JS 控件事件小结
2012/10/31 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
JS实现放大镜效果
2020/09/21 Javascript
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python callable()函数用法实例分析
2018/03/17 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
如何提高JDBC的性能
2013/04/30 面试题
药学专业大学生个人的自我评价
2013/11/04 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
鼋头渚导游词
2015/02/05 职场文书
通知函的格式
2015/04/27 职场文书
行政复议决定书
2015/06/24 职场文书