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动态网页批量爬取
Feb 14 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
python实现堆排序的实例讲解
Feb 21 Python
利用python进行文件操作
Dec 04 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
php从字符串创建函数的方法
2015/03/16 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
Python实现12306火车票抢票系统
2019/07/04 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
演讲稿祖国在我心中
2014/05/04 职场文书