前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Centos7]open读取文件报错:TypeError

[Centos7]open读取文件报错:TypeError

作者头像
贰叁壹小窝
发布2020-07-22 02:04:22
9600
发布2020-07-22 02:04:22
举报
文章被收录于专栏:贰叁壹运维贰叁壹运维

本文编写于 205 天前,最后修改于 205 天前,其中某些信息可能已经过时。

在写对比文件差异的脚本时,运行脚本报错:

代码语言:javascript
复制
TypeError: a bytes-like object is required, not ‘str’

处理方法如下: 1.使用codecs模块 2.原代码为:

代码语言:javascript
复制
fileHandle = open(filename, 'rb')
#此写法用于python2.x版本,因为我的版本为python3.6,所以需要做以下更改

3.更改后的代码为

代码语言:javascript
复制
import codecs
fileHandle = codecs.open(filename, 'rb', 'utf-8')
#将读取的文件类型进行转换

4.脚本完整代码

代码语言:javascript
复制
#!/usr/bin/python3
#-*-coding:UTF-8-*-
import sys
import codecs
import difflib
try:
        textfile1 = sys.argv[1]
        textfile2 = sys.argv[2]
except Exception as e:
    print('Error:',str(e))
    sys.exit()
def readfile(filename): #文件读取分隔函数
        try:
#               fileHandle = open(filename, 'rb')       此方法为python2的写法
                fileHandle = codecs.open(filename, 'rb', 'utf-8')       #python3中使用codecs进行类型转 
换,否则报错TypeError: a bytes-like object is required, not 'str'
                text = fileHandle.read().splitlines()
                fileHandle.close()
                return text
        except IOError as error:
                print('Read file Error:',str(error))
                sys.exit()
#print(readfile(textfile1))
text1_lines = readfile(textfile1)       #调用readfile函数获取分隔后的字符串
text2_lines = readfile(textfile2)
d = difflib.HtmlDiff()  #创建HtmlDiff()类对象
print(d.make_file(text1_lines,text2_lines))     #通过make_file方法输出HTML格式的对比结果
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档