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

TypeError: a bytes-like object is required, not ‘str’

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

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

3.更改后的代码为

import codecs
fileHandle = codecs.open(filename, 'rb', 'utf-8')
#将读取的文件类型进行转换

4.脚本完整代码

#!/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格式的对比结果