python 간단한 파일 읽기 함수 구현

python은 스크립트 언어로서 간편하고 사용하기 쉽다.데이터와 형식을 스크립트로 자주 처리합니다.그 중에서 서류를 처리하는 것이 빈번한 용도 중의 하나다.자주 사용하는 xls와 txt 읽기 함수를 간단하게 몇 개 작성하면 나중에 신속하게 복용할 수 있습니다.
xlrd 라이브러리 함수를 사용하려면 미리 설치해야 합니다
명령: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('
') # 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. 이것은 유니코드 인코딩과 ASCII 인코딩이 호환되지 않아서 생긴 것이다.
2. 통상적으로 ascii이다. 이로써Python은 ascii 인코딩 프로그램을 호출하여 문자 흐름을 처리한다. 문자 흐름이 ascii 범위에 속하지 않으면 이상을 던진다(ordinal not in range(128).
바이두는 아래와 같은 방식으로 해결했다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기