阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

教你如何运用python实现简单文件读写函数

31次阅读
没有评论

共计 2027 个字符,预计需要花费 6 分钟才能阅读完成。

导读 这篇文章主要为大家详细介绍了 python 实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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))。

百度了下通过 以上方式 解决了, 以上就是本文的全部内容,希望对大家的学习有所帮助

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计2027字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中