2009-11-11 18 views
2

我试图编写一个小工具将图片从Google App Engine上传到Picasa。获取图像的作品,但是当我试图把它上传我得到的错误“类型错误:STAT()参数1必须是(编码字符串,不空字节),而不是str的尝试使用GData API将图片从Google App Engine上传到Picasa时出现TypeError

的代码基本上是这样的:

def getfile(url): 
    result = urlfetch.fetch(url) 
    if result.status_code == 200: 
     return (result.content) 
    logging.error ("[-] Error fetching URL: %s" % url) 

def uploadpicture(comment,pic): 
    album_url = '/data/feed/api/user/%s/album/%s' % (username, album) 
    fname = "image.jpg" 
    entry = gd_client.InsertPhotoSimple(album_url, fname, comment, pic, content_type='image/jpeg') 

picurl = "http://brilliantleap.com/blog/frog.jpg" 
pic = getfile(picurl) 
comment = "Test" 
uploadpicture(comment, pic) 

完整的堆栈跟踪是:

回溯(最近通话最后一个):

文件“/家/ BIRT /材料/谷歌/ AppEngine上/转/ web应用/ 初始化 py”为,线507,在通话 handler.get(*组)

文件 “/home/birt/stuff/app_picasaupload/main.py”,线路124,在获取 uploadpicture(评论, PIC)

文件 “/home/birt/stuff/app_picasaupload/main.py”,线路104,在uploadpicture 条目= gd_client.InsertPhotoSimple(ALBUM_URL,FNAME,评论,PIC,CONTENT_TYPE = '图像/ JPEG')

文件 “/home/birt/stuff/app_picasaupload/gdata/photos/service.py”,线路469,在InsertPhotoSimple CONTENT_TYPE)

文件 “/home/birt/stuff/app_picasaupload/gdata/photos/service.py”,线路398,在InsertPhoto os.path.exists(filename_or_handle):#这是一个文件名

文件“ /usr/lib/python2.5/posixpath.py“,第171行,存在 st = os.stat(路径)

文件”/home/birt/stuff/google/appengine/tools/dev_appserver.py “1109,在通话 如果不是FakeFile.IsFileAccessible(路径):

文件”/家/ BI RT /东西/谷歌/应用服务引擎/工具/ dev_appserver.py”,线1018,在IsFileAccessible normcase = normcase)

文件 “/home/birt/stuff/google/appengine/tools/dev_appserver.py”,线1036,在_IsFileAccessibleNoCache 如果os.path.isdir(logical_filename):

文件 “/usr/lib/python2.5/posixpath.py”,线路195,在ISDIR ST = os.stat(路径)

类型错误:STAT()参数1必须(编码而没有空字节串),而不是str的

任何想法? :-)

+3

这是不可能的,没有实际的代码和一个完整的堆栈跟踪。 –

+0

你是否使用Python 3?这就是错误信息所暗示的。 appengine SDK特别支持(当然也包括生产版本;-) Python 2.5,而不是当前版本。 –

+2

这不是你最初所说的例外。如例外情况所示,您似乎试图获取无效的网址。 –

回答

5

解决这个问题,使用StringIO的:-)

http://docs.python.org/library/stringio.html

加入

pic = StringIO.StringIO(pic) 

将结果转换。将内容从urlfetch转换为gdata期望的文件格式。

+0

我有一个类似的问题,试图解压zipfile库的字符串和这个诀窍。 –

相关问题