2016-12-22 4 views
5

मैंड्रॉपबॉक्स एपीआई v2 - files_upload के साथ फाइल अपलोड करने की कोशिश() - फेंकता लेखन त्रुटि

भी tutorial provided on Dropbox's site मैं में कोड बाहर की कोशिश कर रहा python3 में files_upload() फ़ंक्शन का उपयोग ड्रॉपबॉक्स के लिए एक सरल फ़ाइल अपलोड करने की कोशिश कर रहे हैं एक त्रुटि प्राप्त करें और मुझे समझ में नहीं आता क्यों। मुझे यहां क्या समझ नहीं आ रहा है? यहाँ

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 के बजाय data.encode(whatever_encoding) गुजर की कोशिश कर सकते। मुझे यकीन नहीं है कि आपके द्वारा लिंक किए गए ट्यूटोरियल में इसका उल्लेख क्यों नहीं किया गया है।

+1

धन्यवाद! यह ** f.read() ** के साथ पूरी तरह से काम करता है – gasparrobi

संबंधित मुद्दे