来自url的BytesIO使用open()

时间:2017-11-07 14:02:08

标签: python

您可以帮助我,我需要在my_url模式下打开rb。试着这样做。

 url = "https://my url/" + file_info.file_path
            response = requests.get(url)

            with open(BytesIO(response.content), "rb") as f:  # Open in 'rb' mode for reading it in way like: 010101010
                byte = f.read(1) 
                #some algorithm..............
                while byte:
                    hexadecimal = binascii.hexlify(byte)
                    decimal = int(hexadecimal, 16)
                    binary = bin(decimal)[2:].zfill(8)
                    hiddenData += binary
                byte = f.read(1)

出错:

  

预期的str,bytes或.osPathLIke对象,而不是_ioBytesIO

请帮助,我应该如何在"rb"模式下打开我的网址?

我试图使用Pillow打开图片 - 没关系。但至于使用open(),我不能这样做。请..

1 个答案:

答案 0 :(得分:1)

您正在传递一个BytesIO对象(基本上是文件句柄),其中包含文件名。

所以quickfix:

f = BytesIO(response.content) 

但更好的是,使用bytes手动(对于算法的开始)或自动(使用iter循环迭代for个对象,当迭代器耗尽时将停止,所以不需要while):

f = iter(response.content)

byte = next(f)

#some algorithm..............
for byte in f:
    hexadecimal = binascii.hexlify(byte)
    decimal = int(hexadecimal, 16)
    binary = bin(decimal)[2:].zfill(8)
    hiddenData += binary