2

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!

4

1 に答える 1