hob*_*376 4 python dropbox-api
我试图在python中创建一个类,它读取dropbox的访问密钥/密码然后下载文件.密钥/秘密部分正常工作,但我似乎在识别客户端对象时遇到问题,可能是由于全局变量和局部变量的问题.我无法在其他地方找到答案.
这是我的代码的一部分:
from dropbox import client, rest, session
class GetFile(object):
def __init__(self, file1):
self.auth_user()
def auth_user(self):
APP_KEY = 'xxxxxxxxxxxxxx'
APP_SECRET = 'xxxxxxxxxxxxxx'
ACCESS_TYPE = 'dropbox'
TOKENS = 'dropbox_token.txt'
token_file = open(TOKENS)
token_key,token_secret = token_file.read().split('|')
token_file.close()
sess = session.DropboxSession(APP_KEY,APP_SECRET, ACCESS_TYPE)
sess.set_token(token_key,token_secret)
client = client.DropboxClient(sess)
base, ext = file1.split('.')
f, metadata = client.get_file_and_metadata(file1)
out = open('/%s_COPY.%s' %(base, ext), 'w')
out.write(f.read())
Run Code Online (Sandbox Code Playgroud)
这是错误:
Traceback (most recent call last):
File "access_db.py", line 30, in <module>
start = GetFile(file_name)
File "access_db.py", line 6, in __init__
self.auth_user()
File "access_db.py", line 20, in auth_user
client = client.DropboxClient(sess)
UnboundLocalError: local variable 'client' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
我是python的新手,所以让我知道是否有其他明显的事情我可能做错了.
您导入的dropbox.client模块到你的模块的范围为client,但你也有一个局部变量client在你的.auth_user()方法.
当python client =在编译时看到函数中的赋值(例如)时,它将该名称标记为局部变量.此时,您对该client 模块的导入注定失败,在该名称下的函数中不再可见.
接下来,在python的眼中,你试图访问client函数中的局部变量; 你正在试图获得该属性DropboxClient的,但是你还没有任何分配给该变量client的那一刻.所以UnboundLocal抛出了异常.
解决方法是要么不用client作局部变量,要导入顶层dropbox模块而不是它的子模块,然后用完整dropbox.client等路径引用它的子模块,或者第三,给client模块一个新名称:
不要client用作本地:
dbclient = client.DropboxClient(sess)
# ...
f, metadata = dbclient.get_file_and_metadata(file1)
Run Code Online (Sandbox Code Playgroud)dropbox直接导入模块:
import dropbox
# ...
sess = dropbox.session.DropboxSession(APP_KEY,APP_SECRET, ACCESS_TYPE)
# ...
client = dropbox.client.DropboxClient(sess)
Run Code Online (Sandbox Code Playgroud)为client模块提供别名:
from dropbox import session, rest
from dropbox import client as dbclient
# ...
client = dbclient.DropboxClient(sess)
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |