cgi を使用してリモート サーバーからバイト文字列を取得しています。このバイト文字列は、「宛先」に保存された画像であると想定されています
with open(destination, 'rb') as image:
content = image.read()
print(content)
このコードはサーバー部分にあり、python 2.6 を実行します。
次に、ローカル スクリプト (python 3) を使用して、サーバーからの応答を取得します。
import requests
r = requests.get("http://127.0.0.1:8000/cgi-bin/cap.py")
print(r.text)
そして、私は次のようなものを手に入れます:
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00Q\x00\x00\x00\x1c\x08\x02\x00\x00\x00\x96+\xc4\xd3\x00\x00\x06\xc1IDATx\x9c\xedXkLSg\x18~KKa\\\xac\x8a\n\xe2\xccD\xd9l\xc5!V@\xc5\x88\xa0\xa2\x86\xba\x88\xe8P\xa2L\x8a\xa2\xc5\xe9T\xc4\x08\xc1851P\xf1\xc2"i\xa90\x04T\xea\x05I5x\x19U.\x8b\xc8\xa5r\x93\x8b\xb4\x8as\x80\xad\xe8T@\xd0\xd2\xeb~\x1cwr<\xe7\xf4\xac\xee\x8f\xc9\xf0I\xff\xf4y\x9f\xf3~\xef\x93\xef\xf4{\xdf\xaf\xb4\x8bf3\x0c3\xd8|\xea\x02>\x01>{\x1e\x1e\xf8\xecyx`8zf\x10\xa9\xce\xe6\xe6\xea\xc2\xc2\xd6\xb2\xb2\xae\xd6\xd6w\xfd\xfd\x0e,\xd6\xe4Y\xb3\x16n\xdc87"\x02\xa7\x8c\xa0\xd1\xa8\xb3S4\xc2\x87\xd5\xd5\xfb\x02\x02\xccf3\x85\xac\xa5\xb4\xf4vV\x96\xaa\xba\xbaW\xa3\x01\x80\x91nn_\xcf\x99\xb3(6\xf6\xdbE\x8b\x88b\xb3\xc9T"\x16\x97\xe7\xe5\xa9\xdb\xdb\x01\xc0\x9d\xcd\x0e\x8a\x8e^"\x10\xd0l\xf0\xfbJ#\xaeg\xc9\xc9\xbc\xc8\xc8\x9f\xce\x9e\xc5\xa6\xa0\xf6<\xc9\xc7\xe7HC\x03i\xc8d4&\xfa\xfaj\x1e>\x1c\x1a\x1c\x042\xcff\xb39;.N.\x91\x90>\x1e"\x10l\x12\x89h\x98\xd5\r:]\xea\xf2\xe5\xf7\xe5r\x9c\xd2g\xd9\xb2\xbdW\xaf\xd2mm\xb1$\xc9\xbb=\xc9\xc7g\x9dP\x98z\xef^\xfe\x9b7g\x06\x06\x8e57/\x8f\x8f\xa73\x18\x95R\xe9\xcd\x8c\x0c\xac\xf2\xa2\xd9L\xfa\x99\xb6`\x01R\x19i\xc5\x00p3#\xe3Iccxr\xb2%A\x89H$\x97Hl\xe8\xf4\xa5[\xb7\n\xeb\xebs{{s{{\x85uu!\x02\x01\xcd\xc6F\x9e\x99Y"\x16c\xf5\x05II\xf7\xe5\xf2\x11c\xc7\xee((@\xc4;\n\nF\x8c\x1d\xdbx\xf3\xe6\xf9}\xfbp\xc9I\xf6\x99\x14W\x84\xc2s\x89\x89_y{\xa755Q+\x9f\xb6\xb7\xef\xe2p\xec\x9d\x9c$j\xf5\x17\xce\xceD\xc1k\x8df\'\x9b\xcd\x1a7\xeeXK\xcb:{{ \xdb\xe7\x04o\xef\xce\xe6\xe6\xe8\xf4\xf4\xd0\x1d;p\xa1k\'N\xe4\xc5\xc7c+y\xadV\xff\xe8\xe1a2\x1a\x0fWWO\xf1\xf5E\x95\x1d\nE\xf2\xdc\xb9t[[\xd1\x93\',WW\x94\xb7\xf6\x0c\x9b\xbf~=\x00\xa8U\xaa\x7fU\xde:u\n\x00\xe6\xaf[Gj\x18\x00\xf2v\xedz\xd7\xdf\x1f\x9d\x9enkgg)\x89F\xa5\x02\x80\xa0\xe8hb(\x88\xcf\xc7URSTd\xd0\xe9\xfc\xc2\xc2\xb0\x86\x01`\x8a\x9f\x9f_X\x98^\xab\xad)*\xc2\xf2\xd6zF~\x12\x0e#FP\xcb\xf4ZmE^\x1e\x00,\xde\xb2\x85Tp_.\xbf{\xe1\x02\x97\xc7\xe3\xf2x\x14y\x9cF\x8f\xa6^\x08+h-/\x07\x00\xff\xb00\xa2\xcco\xc5\n\x00h)-\xc5\x92\xd6z\xae.,\x04\x80o\x02\x02\xa8eU\x97.\r\xbcz\xe5\xe9\xef\xef1s&1\xaa\x1f\x1a\xfau\xdb6\x06\x93\x19\x9d\x9eN\x9dgZP\x10\x00T\xe4\xe7\x13C\xe5\xb9\xb9\x00\xe0\x15\x14\x842\xddmm\x000\xc9\xc7\x87(F\xc8\xa7\x0f\x1e`I\x92^\xf5A\x95Z\xed_\x9d\x9dw\xa4RYj\xaa\x9d\xa3\xe3\xea\xfd\xfb\xa9\xf5\xc8I\x1bba\x93\xaf\x1e9\xa2Q\xa9V&%\xb9yzR\xe7\x898x\xf0~II~|\xfc\xb3G\x8f\x82\xf9|\xd7\xc9\x93\x01\xe0YGGYNN\x89X\xec<f\xcc\xf7\x07\x0e\xa0b\xa4\x93\xb9L\x9cH\xcc\x83\x90\xaf5\x1a,i\xf1\x0c\xc3\xf5!N`\xe0\x0fG\x8fN\xf1\xf3\xa3(\xb4\xab\xb5u\xf7\xf4\xe9\x0e,\x96D\xad\xb6sp\xc0E{\x1e?\x8e\xf7\xf2rvq\xf9E\xa9\xb4st\xc4\xaeBZ\x83Z\xa9\x94&\'\xd7\\\xbe\x8c\xe3g\xafZ\x15y\xf8\xb0\xfb\xd4\xa9(\x13\xc9d\x1a\xf5z\xa9^Og\xe0\xb7\xd0\xa8\xd7G2\x99\x0c&\xb3`h\x08%\xad}\xb7;\x9b\x9bK23\xfbzz(4\xb7$\x12\x00\x08\x8c\x8a"\x1a\x06\x80\x9cm\xdb\xf4Zm\xd4\xd1\xa3\xa8aj\xbc\xec\xeaR+\x95D^\xadT\xbe\xec\xea\xb2\xaejrX\xf4\x8ctZ\xa9^\x7fJ\xa3I,.\x9e\x16\x18X\x96\x93\x93\xe0\xed\xfd\xb4\xbd\x9dT?\xf4\xf6\xed\xefg\xce\x80\x85\xb6\\s\xf9r\xc3\x8d\x1b\x9c\xc0\xc0yk\xd7ZS\x96\xaa\xaa*\x85\xc7\xebnk\x0b\x11\x08\x84uu\xd8\xfe\xdc\xdd\xd6\x96\xc2\xe3\xa9\xaa\xaaP\xb1\xbd\xa3#\x00 \xe3\r\x0e\xda\xc1A\x00\xb0wr\xb2\xca3\x02:\x831\xd2\xcd\x8d\xcb\xe3\xed\x91\xc9\xc2\x93\x93\xfb\x9e??\x93\x90@\xaa\xbc{\xe1\xc2`o\xef\xd4y\xf3&zy\x11\xa3\xb9;w\xda\xd0\xe91\'O\xfe\x9b\xd9\xf7(<t\xc8\xa0\xd3E\xa5\xa5\xc5\x8a\xc5\x1e\\\xae\x03\x8b\xe5\xc0byp\xb9\xb1bqTZ\x9aA\xa7+<t\x08\x15\x8f\x1c?\x1e\x00H7\x1f!G\x8d\x1f\x8f%?\xe2\x8e\xf1\xdd\xee\xdd\xf0Oc \x02y\xb1\x97X\x98\xbd^vw\x9b\x8c\xc6=3fD\xd0h\xd8\x0f\x12\xc5}\x05\x80G\xb5\xb5\x00\x10\x1c\x13CL\x85\x90\x1d\n\x05\xca|\xc9\xe1\x00\xc0\x93\xc6F\xa2\x18!\'p8X\xf2#<\x1b\r\x06\x00\xb0\xa1\xd3\x89\xa1?\x9b\x9a\x1e\xd6\xd48\xbb\xb8\xccY\xbd\xda\xfa\x84\x14\xd0\xbd{\x07\x004\xd2y\xdelF\x05\x08\xbc\x82\x83\x01\xa0V&#j\x15W\xae\xa0\x02\x14\x1f\xe1\xb9\xf8\xf8q\x00\xf0$;\xbaK23\x01`\xc1\x86\r\xb6\xf6\xf6\xa4\xcfZ\x9a\xccqQT?\x81\xcd\x06\x80\xb2\x9c\x1cb\xaa\xdb\xd9\xd9\x00\xe0\xcef\xa3\xcc\xec\xf0p\x06\x93\xa9\x90\xc9:\xee\xdd\xc3*;\x14\n\x85Lfkg7;<\x1c\xcb\xe3=\xef\xe5r\xaf\x08\x85\xca\xca\xca\xbe\x9e\x1e\x83Ng4\x18z\x9f=k\xb8~=m\xe5JYj*\x8dF\x0bKJ\xc2=\xa2\x1d\x18\xb8s\xee\x1c\x00,\xde\xbc\x99\xd4\xf0\x7f\xc0\xc2\x8d\x1b\x01 ?!!+.\xee\x8f\xfa\xfa\xb7}}o\xfb\xfa\x1e\xd7\xd5\x9d\xda\xb2\xe5\\b"\x00,\x8e\x8dE\xc5\xa3\xdc\xdd\x97n\xddj2\x1aSBC+\xa5RD\\)\x95\xa6\xf0x&\xa3q\xd9\xf6\xed#\xdd\xdc\xb0\xc9\xf1\xfd\x99\xe2zh\xef\xe4\xb4I$\n\x8c\x8a\xc2\xf1\xb7\xb3\xb2$\x9b7{\x05\x07\xff\xfc\xe1\x88g\r,\xf5g\xb3\xc9$\xe2\xf3I\xe70\x00\x08\xe6\xf3\x05\xd9\xd9\xd8[\xad~h(%4\xb4\x85P\x80wHHbq1\x83\xc9\xc4\x92x\xcf]--5EEm\x15\x15O\x1f<\xe8\x7f\xf1\xc2\x86Nw\x1a=z\x02\x87\xe3\x1d\x12\x12\xcc\xe7co\'(\x12}}\x1f\xd7\xd5\xed<\x7f>`\xcd\x1a\xab\xcd\xbe\x07\xc5L\x02\x00\xf5\xd7\xae\x95\x9d>\xfd\xa8\xb6\x16\x99\x0bX\xae\xae\x9e\xfe\xfe\x0bcbf\x86\x86\x12\xc5&\xa3\xf17\x91\xa8"/\x0f\xe9\xea\x13\xd8\xec\x05\x1b6,\x89\x8b#\x1e@\xd6\xde%\xffO\x18\x8e\xff\x87\rG\xcf\x7f\x03\xbf\xe3\x01 \xd1\xd8/_\x00\x00\x00\x00IEND\xaeB`\x82'
文字通り。これは文字列です。先頭に b' があり、末尾に ' があります。
この画像をローカルに保存したいので、この文字列を BytesIO で使用できるものに変換したいと思います。
私が試してみると:
io = BytesIO(r.text)
私は得る:
TypeError: a bytes-like object is required, not 'str'
b' の部分をカットするなど、いろいろ試しましたが、うまくいきませんでした。何か考えはありますか?