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多线程编程方式分析示例详解
Dec 06 Python
Python实现抓取页面上链接的简单爬虫分享
Jan 21 Python
python实现画圆功能
Jan 25 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
Python中整数的缓存机制讲解
Feb 16 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
wxpython绘制音频效果
Nov 18 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
Python中三维坐标空间绘制的实现
Sep 22 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 禁止页面缓存输出
2009/01/07 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
stripos函数知识点实例分享
2019/02/11 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
JavaScript 数组详解
2013/10/10 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
js中this的用法实例分析
2015/01/10 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
python实现石头剪刀布程序
2021/01/20 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
安装PyInstaller失败问题解决
2019/12/14 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
什么是索引指示器
2012/08/20 面试题
董事长秘书岗位职责
2013/11/29 职场文书
学习两会精神心得范文
2014/03/17 职场文书
股份合作协议书范本
2014/04/14 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
给老婆的检讨书
2015/01/27 职场文书
大客户经理岗位职责
2015/04/09 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android