【发布时间】:2011-11-14 00:53:33
【问题描述】:
我为 Google 的 Picasa 服务编写了一个简单的客户端。我想要的是创建一个带有专辑标题名称的文件夹,并将原始照片从服务下载到该文件夹。 如果标题中有任何非拉丁字符,我会收到 IOError:
IOError: [Errno 2] 没有这样的文件或目录: '\xd0\x9e\xd1\x81\xd0\xb5\xd0\xbd\xd1\x8c\Autumnal-Equinox.jpg'
代码示例:
import gdata.photos.service
import gdata.media
import os
import urllib2
gd_client = gdata.photos.service.PhotosService()
username = 'cha.com.ua'
albums = gd_client.GetUserFeed(user=username)
for album in albums.entry:
photos = gd_client.GetFeed(
'/data/feed/api/user/%s/albumid/%s?kind=photo' % (
username, album.gphoto_id.text))
for photo in photos.entry:
destination = os.path.join(album.title.text, photo.title.text)
out = open(destination, 'wb')
out.write(urllib2.urlopen(photo.content.src).read())
out.close()
我尝试用.decode('utf-8') 解码标题,它不起作用。
【问题讨论】:
-
解码给出什么错误?什么是标题类型(打印为 repr(photo.title.text) )
-
它看起来已经解码了。你试过
.encode('utf-8')吗? -
@rocksportrocker
repr(album.title.text)返回str: '\xd0\x92\xd0\xb8\xd0\xb4 \xd0\xb8\xd0\xb7 \xd0\xbe\xd0\xba\xd0\xbd\xd0\xb0' -
@d-k 是的,我试过了。结果是一样的。例如
repr(album.title.text.encode('utf-8'))返回str: '\xd0\x92\xd0\xb8\xd0\xb4 \xd0\xb8\xd0\xb7 \xd0\xbe\xd0\xba\xd0\xbd\xd0\xb0' -
根据code.google.com/p/picasapush/wiki/GDataPhotos,标题应该是unicode,而不是str。你有提示标题应该是什么???