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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
Python字典操作简明总结
Apr 13 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
Python基础中所出现的异常报错总结
Nov 19 Python
git进行版本控制心得详谈
Dec 10 Python
python日期与时间戳的各种转换示例
Feb 12 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
关于Python字符编码与二进制不得不说的一些事
Oct 04 Python
python Xpath语法的使用
Nov 26 Python
Python爬虫之Selenium实现键盘事件
Dec 04 Python
PyQt5实现多张图片显示并滚动
Jun 11 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
PHP4实际应用经验篇(8)
2006/10/09 PHP
PHP与SQL注入攻击[一]
2007/04/17 PHP
PHP 基本语法格式
2009/12/15 PHP
php验证码实现代码(3种)
2015/09/07 PHP
php中序列化与反序列化详解
2017/02/13 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python的re正则表达式实例代码
2018/01/24 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python单链表原理与实现方法详解
2020/02/22 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
知识竞赛活动方案
2014/02/18 职场文书
招股说明书范本
2014/05/06 职场文书
高一新生军训方案
2014/05/12 职场文书
杨善洲电影观后感
2015/06/04 职场文书
Golang入门之计时器
2022/05/04 Golang
Java线程的6种状态与生命周期
2022/05/11 Java/Android