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的Django框架完成视频处理任务的教程
Apr 02 Python
使用Python中的线程进行网络编程的入门教程
Apr 15 Python
Python fileinput模块使用实例
Jun 03 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
python ddt实现数据驱动
Mar 14 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
python能做哪些生活有趣的事情
Sep 09 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 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多用户计数器代码
2007/03/11 PHP
dedecms系统常用术语汇总
2007/04/03 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
Python 开发Activex组件方法
2009/11/08 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
详解KMP算法以及python如何实现
2020/09/18 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
无传销社区工作方案
2014/05/13 职场文书
公关活动策划方案
2014/05/25 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
解决mysql的int型主键自增问题
2021/07/15 MySQL
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android
python使用BeautifulSoup 解析HTML
2022/04/24 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python