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

这篇文章主要为大家详细介绍了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))。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值