2016-12-22 3 views
5

Я пытался загрузить простой файл в Dropbox с помощью функции files_upload() в Python3Dropbox API v2 - пытается загрузить файл с files_upload() - Выдает TypeError

Даже попробовать код в tutorial provided on Dropbox's site I получить ошибку, и я не понимаю, почему. Что мне здесь не хватает?

Вот мой код:

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

Смежные вопросы