我编写了一个 python 脚本来检查 Dropbox 文件夹中的文件添加/删除。delta API说
Delta 条目:每个条目是以下形式之一的 2 项列表:
[路径,元数据]:
或者
[路径,无]
每个条目都指向一个已更改(创建/修改/删除)的文件
nil
当文件存在于 Dropbox 文件夹中时,元数据属性为非,当文件不存在nil
时,即当它已被删除时(或者我理解。如果我错了,请纠正我)
因此,要查找已创建的文件,我可以遍历条目列表并检查每个条目的第二个属性是否为 non 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!