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中http请求方法库汇总
Jan 06 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
Python中正则表达式详解
May 17 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
深入浅析python 中的匿名函数
May 21 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
用python实现刷点击率的示例代码
Feb 21 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
python实现随机加减法生成器
Feb 24 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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显示MySQL数据的三种方法
2008/06/05 PHP
php实现的http请求封装示例
2016/11/08 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python计算列表内各元素的个数实例
2018/06/29 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
初三家长会邀请函
2014/01/18 职场文书
团拜会策划方案
2014/06/07 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
国防教育标语
2014/10/08 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android