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解析文件示例
Jan 23 Python
Python中使用SAX解析xml实例
Nov 21 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
Python实现多线程抓取妹子图
Aug 08 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
PyQt5实现简易计算器
May 30 Python
Django实现跨域请求过程详解
Jul 25 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
Python实现壁纸下载与轮换
Oct 19 Python
Python截图并保存的具体实例
Jan 14 Python
Django REST framework 限流功能的使用
Jun 24 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 字符串压缩方法比较示例
2014/01/23 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
Python迭代用法实例教程
2014/09/08 Python
python绘图方法实例入门
2015/05/19 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
教书育人演讲稿
2014/09/11 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
个人原因辞职信模板
2015/05/13 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript
vue中data里面的数据相互使用方式
2022/06/05 Vue.js