我正在尝试将文件列表上传到Dropbox,但是我遇到了各种错误。我试过这个,并在网上尝试了一切。但我仍然无法让它发挥作用。
# Include the Dropbox SDK libraries
from dropbox import rest, session
import webbrowser
import os
import glob
import zipfile
import datetime
from dropbox import client
# Get your app key and secret from the Dropbox developer website
# (app keys defined here)
# ACCESS_TYPE should be 'dropbox' or 'app_folder' as configured for your app
ACCESS_TYPE = 'app_folder'
sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
request_token = sess.obtain_request_token()
url = sess.build_authorize_url(request_token)
file_list = []
#get the date
now = datetime.datetime.now()
def initialize():
#print "url:", url
# open a public URL, in this case, the webbrowser docs
#url = "http://docs.python.org/library/webbrowser.html"
webbrowser.open(url)
print "Please click the 'Allow' button to Authorize..."
print """
Please select by entering the specific number...
1 Backup all my files by one by one
2 Backup specific folder
3 Backup specific file
4 Get my account details
5 About this software
6 Exit
"""
try:
# This will fail if the user didn't visit the above URL and hit 'Allow'
access_token = sess.obtain_access_token(request_token)
except:
print "Error has occured"
def getAccountInfo():
from dropbox import client
client = client.DropboxClient(sess)
account_info_dict = client.account_info()
print "linked account:"
for item in account_info_dict:
if type(account_info_dict[item]) == dict:
inner_dict = account_info_dict[item]
for item1 in inner_dict:
print item1, ":", inner_dict[item1]
print item, ":", account_info_dict[item]
def getAllFiles():
for dirname, dirnames, filenames in os.walk('I:/'):
for subdirname in dirnames:
print os.path.join(dirname, subdirname)
for filename in filenames:
file_name = os.path.join(dirname, filename)
print file_name
file_list.append(file_name)
return file_list
def upload_one_by_one(sess):
from dropbox import client
files = getAllFiles()
client = client.DropboxClient(sess)
#zip_file_name = now.strftime("%Y%m%d%H%M")+ ".zip"
#z = zipfile.ZipFile(zip_file_name, "w")
for file_item in files:
#z.write(file_item)
#f = open(zip_file_name)
response = client.put_file("test/", file_item)
print "uploaded:", response
break
initialize()
#getAccountInfo()
upload_one_by_one(sess)
client.put_file()参数的问题。我正在尝试将图像文件上传到测试文件夹中。但它上传为文本文件,其中包含图像文件的路径。
我无法通过dropbox sdk将图片文件上传到Dropbox吗?
答案 0 :(得分:2)
您似乎没有打开要上传的文件,这可能有效:
for file_item in files:
file = open(file_item)
response = client.put_file("test/", file)
答案 1 :(得分:1)
put_file()
采用类似文件的对象或表示文件内容的字符串。如果传入文件名,则不会自动读入文件内容。