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)

相关推荐

  • 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')

  • Python内存映射文件读写方式

    我就废话不多说了,还是直接看代码吧! import os import time import mmap filename = 'test.txt' #如果不存在,创建. if not os.path.exists(filename): open(filename, 'w') print(os.path.isdir(filename)) if os.path.isfile(filename): print(time.ctime(os.path.getctime(filename))) fd =

  • 深入解读Python如何进行文件读写

    open Python提供了非常方便的文件读写功能,其中open是读写文件的第一步,通过open读写文件的方式和把大象装冰箱是一样的 f = open("test.txt",'w') #第一步,把冰箱门(文件)打开 f.write("this is content") #第二步,把大象(文件内容)装进去 f.close() #第三步,把冰箱门关上,否则大象可能会跑掉 open的定义方式为 file=open(path,mode='r',buffering=-1,en

  • Python OpenCV简单的绘图函数使用教程

    目录 1.画直线的函数是cv2.line 2.画矩形的函数是cv2.rectangle 3.画圆函数是cv2.circle 4.画椭圆的函数是cv2.elipes 5.画多边形的函数是cv2.polylines 6.添加文字的函数是cv2.putText 1.画直线的函数是cv2.line cv2.line函数语法: cv2.line(img,start_point,end_point,color,thickness=0) cv2.line函数参数解释: img:需要画的图像 start_poi

  • python使用技巧-文件读写

    前言: 在Python中,要对一个文件进行操作,只需要使用内置的open函数打开文件即可.open函数接受文件名和打开模式作为参数,返回一个文件对象.工程师通过文件对象来操作文件,完成以后,调用文件对象的close方法关闭文件即可. 新建opentest.py: f = open('log.log') print(f.read()) f.close() 输出: 2022-02-17 13:41:34,796:INFO:info2022-02-17 13:41:34,797:WARNING:war

  • Python多线程同步---文件读写控制方法

    1.实现文件读写的文件ltz_schedule_times.py #! /usr/bin/env python #coding=utf-8 import os def ReadTimes(): res = [] if os.path.exists('schedule_times.txt'): fp = open('schedule_times.txt', 'r') else: os.system('touch schedule_times.txt') fp = open('schedule_ti

  • 对Python之gzip文件读写的方法详解

    gzip文件读写的时候需要用到Python的gzip模块. 具体使用如下: # -*- coding: utf-8 -*- import gzip # 写文件 f_out = gzip.open("xxx.gz", "wb") # 读文件 # f_in = gzip.open("xxx.gz", "rb") for line in open("yyy.txt", "rb"): f_out

  • 给Python学习者的文件读写指南(含基础与进阶)

    对于初学者来说,一份详尽又清晰明白的指南很重要.今天,猫猫跟大家一起,好好学习Python文件读写的内容,这部分内容特别常用,掌握后对工作和实战都大有益处.学习是循序渐进的过程,欲速则不达.文章较长,建议大家收藏,以备复习查阅哦. 1.如何将列表数据写入文件? 2.如何从文件中读取内容? 3.多样需求的读写任务 4.从with语句到上下文管理器 如何将列表数据写入文件? 首先,我们来看看下面这段代码,并思考:这段代码有没有问题,如果有问题的话,要怎么改? li = ['python',' is'

  • 动感网页相册 python编写简单文件夹内图片浏览工具

    不知道大家有没有这样的体验,windows电脑上查看一张gif图,默认就把IE给打开了,还弹出个什么询问项,好麻烦的感觉.所以为了解决自己的这个问题,写了个简单的文件夹内图片浏览工具. 效果图 以E盘某一文件夹为例 效果图 实现思路 业务代码 # coding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/5' # __Desc__ = 自

  • 详解python中的异常和文件读写

    Python异常 1.python异常的完整语法 try: # 提示用户输入一个整数 num = int(input("输入一个整数:")) # 使用 8 除以用户输入的整数并且输出 result = 8 / num print(result) except ValueError: print("请输入正确的整数!") except Exception as result: print("未知错误:%s" % result) else: prin

随机推荐