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 FTP操作类代码分享
May 13 Python
Python学习笔记_数据排序方法
May 22 Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
Python的Flask框架与数据库连接的教程
Apr 20 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
深入理解python中的atexit模块
Mar 07 Python
python使用sqlite3时游标使用方法
Mar 13 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
python 进程池pool使用详解
Oct 15 Python
Django实现随机图形验证码的示例
Oct 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
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
javascript 写类方式之十
2009/07/05 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
Python实现截屏的函数
2015/07/25 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python 列表推导式使用详解
2019/08/29 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
50道外企软件测试面试题
2014/08/18 面试题
自荐信格式
2013/12/01 职场文书
产品销售计划书
2014/05/04 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
婚宴父母致辞
2015/07/27 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL