【发布时间】:2013-01-17 14:11:22
【问题描述】:
我想要实现的是从通过 php 脚本(动态)生成图像的 url 获取(图像的)二进制数据,并使用 sqlalchemy 将该数据保存到数据库中。当我尝试使用 python 或 ipython 解释器来实现这一点时,会返回数据,但在脚本中使用相同的代码时,数据是一个空白字符串。
使用解释器:
>>>import urllib
>>>link = 'http://www.example.com/getImage.php?e=23f4904fhsdajf0xns3erre32q886heipxd8c447gf8gs9b9d'
>>>image = urllib.urlopen(link).read()
>>>image
返回以下二进制数据:
>>>'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xe1\x00\x18Exif\x00\x00II*\x00 \x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe1\x03)http://ns.adobe.com/xap/1.0/\x00 \xff\xdb\x00C\x00\x01\x01\x01 \x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01 \x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x01\x01\x02\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02 \x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\xff\xc0\x00\x0b\x08\x00\x16\x01,\x01\x01\x11\x00\xff\ xc4\x00\x1b\x00\x01\x00\x03\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x07\x08\x05\ t\n\x03\xff\xc4\x00$\x10\x00\x02\x02\x03\x01\x01\x01\x00\x02\x02\x03\x00\x00\x00\x00\x00\x05\x06 \x04\x07\x02\x03\x08\x00\x01\t\n\x14\x12\x17\x13\x15\x16\xff\xda\x00\x08\x01\x01\x00\x00?\x00\ xfb\xf8\xf3\xcf\x9f\xda\xaeq\x9b\ x88\xc6%Q-\xdc\xb5\xd1\xcb\x80"\x1c\xc9Sf\xca\xdd\xaa4X\xd1vo\xdf\xb3\rXe\x97\xc2\xcbb\xab\xa0\xe9&\ x13\x99\x97\xdb\x04C
lS\x98Qd\xc8\xe3\xc3\xa2\xb5!5\x19EzY\x938\\\x9d\xba\xb40\x05v\\a\x0cZ\x16Y|\x928\xa8)\xa3\xe6k\xd3..\xfd8H<\xf3\xcf<\xf3\xcf<\xf3\xcf<\xf3\xcf<\xf3\xcf<\xf3\xdf7[\xa2\xf4\xe1\xfe\xe6^\x85\x96\xdf\xd0$\x94;\x0b\xb0\xba\xc6\x9a\xbc6m+\xdb\xcdJ\xa09\xe1\xb2\x89\xe9\xd5Z>\xc3Ka\x0e\x00=5U\xa0ej\x8f\xa0\xcb\xa9\x92G\x10U\xa9gIq\xbb]_\xa1\x92\xd0\xcd\xaag\x01\x97/\xd3\xd7\xde}\xf93\x97\xbd\xeac\x81\xae\x1a\x0f\x94\xef!\xf0kn\x91\xb1K\xcd\xa69\xd2\xa5\xb5\x87 ]\xbdOWQ\\xf1s\xa0\xd8,X\xd8\x1d\x90\xe4\x07\x1cL \xb3Be#[!\x863\nI\xa1\x18l\x156\xa5n\xae?B\xe6\xd2/ 2\x03[\xdd\xf0\xeb\xf1\x1f\x8a\xbf]\xad~w$\x99^\xf6\x174\x1e\'s\xa1\xc4\xfc\xfd\x93\xc6IGP,n \x8f\xb1\xac\xb b\x10\xec\xab\x14\x7fE\x10K\x11j\x9f\xda\xdc\xc8HC\x9f\xdf\xb8\xaa\xcd\xfb\xde\xc8\x17!\xbf\xbc\xbe?\xbb\xf4=A\xb7\xbbf\ xa5\n\x1e\xe17\xdb\xb7\xe5y!J7)\xf5Z\xdf\x19\xb7\x1aj~\x1b\xa6\x9a\x81V\xcf\xe8e\xceb"4\xa8\xb8\x0c\ x8dP!\xb0F\xddgX\x98\x92\xfa\xdf\x89\r\x83\x91g%\xfeq\xb0Y\xf9\xd2/\xea\x9c\xd0\xea7\xdf\xe6[\xb3dn\x88\ x1b\xd3L\x16\xa9\x15\xf4\xee\xc1\xa8\x99\xbb,UB\x9bi@\xddh\xb7\x0f\xdd\xcf\xc1\x98\ xb5\xbb\x84\x0b\xa2z\x11\xe8\x93w\x07B\x1f/\x19,q$\xe1\x0e\x8d\xa9z\n\xfc\x1b\xc96\x85\x97T\xf6\xb9\ x91\xa9]\x03\xdfoly\xc0[\xea\x11\xb6\xeae+\xbb\xf9&~i\xd9\x95pi\x83+\x8cu\xb5i\xc2/\x11\xd7m\xec\x08\xa0\xe2c \xb6^\x85\xda\x929\xe4\xb8\x7f3U\x178u\xc8\xfe\xef\xd4[T\xfb\x81%\xa9\xd2\xfb\xddY\xf0\x11@4\xff\x00\xf9H5\x00\xad\x8e\xcd\xb8fq%\xed\xcf\xfeJ\xc6\xc4\xe6.\x8d\xe8\x1dCQi\xfa\xbc\x81\n\xd4\xd3gJ\xe3\xcaV\xfdW\xd74\xc4\x0eG\xadBnkZ\x1f\xf9\xfd\xd1t\xad\x02\xa9sc\xf0\x1a\xadMD\x912l\xcf\xd0*\x1fZ\x8cZA\x07\xee\xca) s4\xb1\x8b\xd3+/\xf6\xac\x1e\xff\x00\xe5\xc1nn\xbd\x8f\x06\xcas\xfd6\xed\xf4k0\\\xb6K\xc27\x16\xb6\xf3:\xef+w\xcb7+(\xa5\xc2\xdb7\x1a\xd8\xf9H)\tT\xf1\x12p\x17\xf1\xdcj+\x9a\xa9\xc9n\xda\xb5\x98\x82\x0b=T}\x01N\xf7\x02\xdaG5;\x1ep\xfd\x19"\xfa\x1f\x9e\xff\x00\x8f%\x88\xe0\x1e\xc0\xb6z\x99\x8a\x0c\xbb\xb6\xef\xeb\xc6J\xd3\xf4\xe0E\x80\x96\xd4{tS\x1b\x03s\x15\xad\xcf+eb\xed\x82 \x95\x12fm\xe4\x87\n/?y\xcd\xf5\xbc\x03]\xe3\x0e\xbb\xe8\xcc\xd3\x85~\x8f\x8cg\xb3?&\xff\x00H2\ xdc\xb8\xef\xa7\xbc,\x87\xe4\xee\xe8\x10\x1e\xa6\xe7 \xe1,Wu\x91J!n\xac\x06\xcf\xbb"/\xc8\xa5\x15\xd5\x12\xa7\x92\x81\xaa\x1a\xe9\x06I9\xad|\x89\xb9"cn*s\xe8\x8a\xcc\x8aG^\'\xa2\x0e\xfdC\xee\xabK\xabr\xa4k\xce\x87X\xb6\x8a\xf2]\xd9\xdd\x9f\xa6\xec\xd5Izy\x9a\xa1\x0b\xa1\xb1\x9b\x026\x9e}6wE{"C>\x8a\xe9\xda!\xcf\x9a\xf5\x83e \x19.\x7f%\x9b\xff\x00m\xfd\xc5_\x96\xf6?\xaf\x18s\xa6y \xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9e\xaa\xeazV\xb8\xa4E\xb4\x89\xaeB\x91\x19\xa9\xe1 \xe9\x8e\xcbq u\xb1\xc1\xe9\x8d\xa1\xe1\xab(\x98\x17m\xcb\x0f\x99g\xf3/\xbf>}\xf4yw\x8ay\xa5V\xfb\x9f\ xd3\x00\xeb\xe9\xf1m\xd9\xc4\xda\x0f\xea\x9f"\xc2\xb3\x89#\x82ky\x13\x14\x0b\xd3\xcau:Q\xcfrj-\x84t,L "\x9ba\x0c\x02\x01\xb2\xfa7o\xd6F|\x9ceI\xf9\xb7Ty\xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9ey\xe7\x9ey\xef\xff \xd9'
现在在脚本中使用相同的代码如下:
def get_image(link):
print link #Debug: Check if link has been passed
image = urllib.urlopen(link).read()
print type(image), image
return image
第一个打印语句返回:
http://www.example.com/getImage.php?e=23f4904fhsdajf0xns3erre32q886heipxd8c447gf8gs9b9d
第二个:
类型,
为什么相同的代码会产生不同的结果?任何人都可以在这里想到可能的原因吗?
【问题讨论】: