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采用getopt解析命令行输入参数实例
Sep 30 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
总结python中pass的作用
Feb 27 Python
Python3.5装饰器典型案例分析
Apr 30 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
Jul 12 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Python如何读取文件中图片格式
Jan 13 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python内存动态分配过程详解
2019/07/15 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
公司活动策划方案
2014/01/13 职场文书
出生证明公证书
2014/04/09 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
培训研修方案
2014/06/06 职场文书
信用卡工作证明模板
2014/09/14 职场文书
关于远足的感想
2015/08/10 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python