Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-TypeError:应为类似字符串或字节的对象_Python_For Loop - Fatal编程技术网

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'
以文本模式读取文件。