我编写了一个 python 脚本来检查 Dropbox 文件夹中的文件添加/删除情况。 delta API说的是
Delta Entries: Each entry is a 2-item list of one of following forms:
[path, metadata]:
或
[path, nil]
每个条目都引用一个已更改(创建/修改/删除)的文件
当文件存在于 Dropbox 文件夹中时,元数据属性为非nil
,当文件不存在时,即已被删除时(或者这样),元数据属性为 nil
我明白了。如果我错了,请纠正我)
因此,要查找已创建的文件,我可以迭代条目列表并检查每个条目的第二个属性是否为非nil
。
但是,当我从 Dropbox 文件夹中删除文件后
for entry in next_cursor['entries']:
print entry[0]
print entry[1]
打印
./filename
None
即,无
,而不是nil
。因此,我对“None”而不是“nil”进行了字符串比较,但即使条目 1为“无”,比较失败。这让我很困惑。
我的整个代码如下。
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
,它也表明文件已被添加!
最佳答案
在 Python 中,None
是一个特殊常量,其值通常称为 null
或 nil
值。由于某种原因,DropBox 文档在本例中使用术语 nil
,而不是 Python 的术语 None
。
请注意,None
不是字符串。 None == "None"
将返回 false。因此,如果您有 entry[1] != "None"
,您需要使用 entry[1] != None
来代替。
关于python - 无法在 Python 上使用 Dropbox API 区分文件添加和文件删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19900578/