为RawIOBase python打开一个文件
我需要为一个函数读入一个文件的二进制文件,从这个链接来看,我应该使用一个RawIOBase对象来读入它。但是我找不到任何关于如何打开文件以与RawIOBase一起使用的地方。现在,我已经尝试将二进制读入字符串为RawIOBase python打开一个文件,python,binary,Python,Binary,我需要为一个函数读入一个文件的二进制文件,从这个链接来看,我应该使用一个RawIOBase对象来读入它。但是我找不到任何关于如何打开文件以与RawIOBase一起使用的地方。现在,我已经尝试将二进制读入字符串 with (open(documentFileName+".bin", "rb")) as binFile: document = binFile.RawIOBase.read() print document 但这会抛出错误AttributeError:“file”对象没有属
with (open(documentFileName+".bin", "rb")) as binFile:
document = binFile.RawIOBase.read()
print document
但这会抛出错误AttributeError:“file”对象没有属性“RawIOBase”
因此,在RawIOBase中没有open属性的情况下,如何打开文件以供读取 除非您需要编写自己特有的文件oid类型,否则不要深入研究
io
灌木丛的实现细节!就你而言
with open(documentFileName+".bin", "rb") as binFile:
document = binFile.read()
会很好的
顺便注意,我已经删除了您使用的多余括号--“没有多余的像素!!!”--但是,尽管很重要!,这是你在这里的目标的一个次要问题
现在,假设Python2,document
是一个str
——一个不可变的字节数组。显示文档
将其显示为字符串可能会让人困惑,但这只是Py2对文本和字节字符串的混淆(在Py3中,返回的类型将是字节
)
如果您喜欢(例如)使用int
s的可变数组,请使用
theints = map(ord, document)
或者,对于以数字显示的不可变字节数组
import array
thearray = array.array('b', document)
好吧,有道理。但我认为我的问题表述错误了,我想把文件的各个位读入二进制字符串。当我用open('filename','rb')打开文件时,我只需返回字符串的ascii表示形式。是否有专门的函数来读取单个字节?我希望,通过编辑来澄清您的困惑(假设您给出的URL中有Python2——最好适当地标记…)。