我编写了一个python脚本来检查Dropbox文件夹中的文件添加/删除。 delta API表示
Delta条目:每个条目都是以下表格之一的2项目列表:
[路径,元数据]:
或
[path,nil]
每个条目都指的是已更改(创建/修改/删除)的文件
如果文件存在于Dropbox文件夹中,则元数据属性为非nil
,如果文件不存在,则为nil
,即删除时(或者我理解。)如果我错了)
因此,要查找创建的文件,我可以遍历条目列表并检查每个条目的第二个属性是否为非nil
。
但是,当我执行
时从Dropbox文件夹中删除文件for entry in next_cursor['entries']:
print entry[0]
print entry[1]
打印
./filename
None
即None
,而不是nil
。所以我对'None'而不是'nil'进行了字符串比较,但即使条目1为'None',比较也失败了。这令我感到困惑。
我的整个代码如下。
import dropbox
import sys
access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx'
client = dropbox.client.DropboxClient(access_token)
curr_cursor_file = open("cursor.txt", "r")
curr_cursor = curr_cursor_file.read()
curr_cursor_file.close()
next_cursor = client.delta(curr_cursor)
#print next_cursor
curr_cursor_file = open("cursor.txt", "w")
curr_cursor_file.write(next_cursor['cursor'])
curr_cursor_file.close()
if len(next_cursor['entries']) > 0:
for entry in next_cursor['entries']:
if entry[1] != "None":
print "File added!"
print entry[0]
print entry[1]
else:
print "No new files have been added. But files have been removed."
else:
print "No files have changed."
即即使entry[1]
打印None
,也会显示File has been added!
答案 0 :(得分:2)
在Python中,None
是一个特殊常量,其值通常称为null
或nil
值。出于某种原因,DropBox文档在这种情况下使用术语nil
而不是Python的术语None
。
请注意None
不是字符串。 None == "None"
将返回false。因此,您entry[1] != "None"
的位置需要使用entry[1] != None
。