2016-12-22 9 views
5
を投げる

私もtutorial provided on Dropbox's site I内のコードを試してのDropbox API v2の - files_uploadでファイルをアップロードしようとしている() - 例外TypeError

のpython3でfiles_upload()関数を使用してDropboxに単純なファイルをアップロードしようとしていますエラーが発生し、理由を理解できません。私はここで何が欠けていますか?ここで

は私のコードです:

import dropbox 

dbx = dropbox.Dropbox("my_access_token") 

data = "asd" 

dbx.files_upload(data, '/file.txt') 

そして、ここで私はそれを実行しようとすると、私が取得エラーメッセージです:私はそれさまざまな方法を試してみた

Traceback (most recent call last): 
    File "dbox.py", line 7, in <module> 
    dbx.files_upload(data, '/file.txt') 
    File "/usr/local/lib/python3.4/dist-packages/dropbox/base.py", line 1225, in files_upload 
    f, 
    File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 249, in request 
    timeout=timeout) 
    File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 341, in request_json_string_with_retry 
    timeout=timeout) 
    File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 385, in request_json_string 
    type(request_binary)) 
TypeError: expected request_binary as binary type, got <class 'str'> 

1.

with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f: 
    dbx.files_upload(f, '/asd.txt', mute = True) 

2.

dbx.files_upload("hello", "") 

3.

dbx.files_upload("hello", "/") 

が、私は同じエラーを毎回取得します。

答えて

10

thisのドキュメントでは、files_upload()の最初の引数はbytesオブジェクトである必要があります。あなたがで親しま意味:

with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f: 
    dbx.files_upload(f, '/asd.txt', mute = True) 

f.read()bytesオブジェクトを返す)の代わりにこれを試してみてください:

with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f: 
    dbx.files_upload(f.read(), '/asd.txt', mute = True) 

またdata.encode(whatever_encoding)だけではなくdataを渡してみてください。あなたがリンクしているチュートリアルでこれがなぜ言及されていないのか分かりません。

+1

ありがとうございます! ** f.read()**と完全に動作します – gasparrobi

関連する問題