Google App Engine から Picasa に写真をアップロードするための小さなツールを作成しようとしています。画像のフェッチは機能しますが、アップロードしようとすると「TypeError: stat() argument 1 must be (encoded string without NULL bytes), not str」というエラーが表示されます
コードは基本的に次のようになります。
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)
完全なスタックトレースは次のとおりです。
トレースバック (最新の呼び出しが最後):
ファイル "/home/birt/stuff/google/appengine/ext/webapp/ init .py"、507 行目、call handler.get(*groups)内
ファイル "/home/birt/stuff/app_picasaupload/main.py"、124 行目、get uploadpicture(comment, pic)
ファイル「/home/birt/stuff/app_picasaupload/main.py」、104 行目、uploadpicture エントリ = gd_client.InsertPhotoSimple(album_url, fname, comment, pic, content_type='image/jpeg')
ファイル「/home/birt/stuff/app_picasaupload/gdata/photos/service.py」、469 行目、InsertPhotoSimple content_type 内)
File "/home/birt/stuff/app_picasaupload/gdata/photos/service.py", line 398, in InsertPhoto os.path.exists(filename_or_handle): # ファイル名です
ファイル "/usr/lib/python2.5/posixpath.py"、171 行目、exists st = os.stat(path)
ファイル "/home/birt/stuff/google/appengine/tools/dev_appserver.py"、1109 行目、 FakeFile.IsFileAccessible(path) でない場合の呼び出し:
ファイル「/home/birt/stuff/google/appengine/tools/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(path) 内
TypeError: stat() 引数 1 は、str ではなく (NULL バイトのないエンコードされた文字列) でなければなりません
何か案は ?:-)