Python-TypeError:应为类似字符串或字节的对象
我有以下代码:Python-TypeError:应为类似字符串或字节的对象,python,for-loop,Python,For Loop,我有以下代码: import re meshTerm = {} meshNumber = {} File = 'file.bin' with open(File, mode='rb') as file: readFile = file.read() outputFile = open('output.txt', 'w') for line in readFile: term= re.search(r'MH = .+', line) print(term) 运行代
import re
meshTerm = {}
meshNumber = {}
File = 'file.bin'
with open(File, mode='rb') as file:
readFile = file.read()
outputFile = open('output.txt', 'w')
for line in readFile:
term= re.search(r'MH = .+', line)
print(term)
运行代码时,出现以下错误:
Traceback (most recent call last):
File "myFile.py", line 13, in <module>
term = re.search(r'MH = .+', line)
File "C:\Python35\lib\re.py", line 173, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
回溯(最近一次呼叫最后一次):
文件“myFile.py”,第13行,在
术语=重新搜索(r'MH=.+',行)
搜索中第173行的文件“C:\Python35\lib\re.py”
返回编译(模式、标志)。搜索(字符串)
TypeError:应为字符串或类似字节的对象
为什么呢?我怎样才能解决这个问题
谢谢。在这一行中,您正在使用二进制模式'rb'
读取整个文件
with open(File, mode='rb') as file:
readFile = file.read()
这使您的readFile成为一个字节数组,当您以以下方式循环readFile时,它将为您提供一个字节。python假定它是一个整数
>> for line in readFile:
>> print(line)
>> print(type(line))
116
<class 'int'>
104
<class 'int'>
105
<class 'int'>
...
在这一行中,您使用二进制模式'rb'
读取整个文件
with open(File, mode='rb') as file:
readFile = file.read()
这使您的readFile成为一个字节数组,当您以以下方式循环readFile时,它将为您提供一个字节。python假定它是一个整数
>> for line in readFile:
>> print(line)
>> print(type(line))
116
<class 'int'>
104
<class 'int'>
105
<class 'int'>
...
谢谢你的友好回复。我现在得到一个错误:TypeError:不能在object这样的字节上使用字符串模式。这回答了上面的错误。似乎我应该使用字节模式而不是字符串模式:@Simplicity哦,对不起,是的,如果文件中有字符串,您可以通过将
'rb'
更改为'r'
以文本模式读取文件。谢谢您的回复。我现在得到一个错误:TypeError:不能在object这样的字节上使用字符串模式。这回答了上面的错误。似乎我应该使用字节模式而不是字符串模式:@Simplicity哦,对不起,是的,如果文件中有字符串,您可以通过将'rb'
更改为'r'
以文本模式读取文件。