欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python实现简单文件读写函数

程序员文章站 2022-04-01 16:15:57
python作为脚本性语言,加上它的简便易用性。会经常当作脚本用来处理一下数据和格式。其中处理文件就是频繁用处之一。简单编写几个常用的xls和txt读写函数,以后可以快速复用。用到xlrd库函数需要预...

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 文件读写