Dropbox フォルダーからのファイルの追加/削除を確認するための Python スクリプトを作成しました。デルタAPIはそれを言います
差分エントリ: 各エントリは、次のいずれかの形式の 2 項目リストです。
[パス、メタデータ]:
また
[パス、なし]
各エントリは、変更 (作成/変更/削除) されたファイルを参照します
メタデータ属性はnil
、ファイルが Dropbox フォルダーに存在する場合は non であり、存在nil
しない場合、つまり削除された場合です (または、私が間違っている場合は訂正してください)。
したがって、作成されたファイルを見つけるために、エントリのリストを繰り返し処理し、各エントリの 2 番目の属性が non かどうかを確認できますnil
。
ただし、Dropboxフォルダーからファイルを削除した後、
for entry in next_cursor['entries']:
print entry[0]
print entry[1]
それは印刷します
./filename
None
つまり、None
の代わりにnil
。そのため、「nil」ではなく「None」の文字列比較を行いましたが、エントリ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!