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中的偏函数
Apr 27 Python
python检测是文件还是目录的方法
Jul 03 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
Python星号*与**用法分析
Feb 02 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python类的继承用法示例
Jan 31 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
python框架django项目部署相关知识详解
Nov 04 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 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
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP排序算法类实例
2015/06/17 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
Convert Seconds To Hours
2007/06/16 Javascript
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
js常见遍历操作小结
2019/06/06 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
Python运算符重载用法实例
2015/05/28 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
Keras loss函数剖析
2020/07/06 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
文秘人员工作职责
2014/01/31 职场文书
学校春季防火方案
2014/06/08 职场文书
婚礼父母答谢词
2015/01/04 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技