如何检查 FTP 服务器目录中的更改?
How to check for change in the directory at FTP server?
我想在 FTP 上的目录中添加新文件后立即将文件从 FTP 服务器获取到本地。
我知道可以使用 watchdog observer 查看本地机器目录的变化。
但我想检查 FTP 服务器上的目录更改(添加新文件、删除文件)。
如何实现?
我用来检查本地计算机目录更改的代码:
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import ftplib
import time
class ExampleHandler(FileSystemEventHandler):
def on_created(self, event):
print "Got event for file %s" % event.src_path
session = ftplib.FTP('address','username','password')
path='/directory/to/check'
session.cwd(path)
observer = Observer()
event_handler = ExampleHandler()
observer.schedule(event_handler, path_of_the_directory)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
FTP 协议没有API 通知客户端有关更改。
如果 FTP 是您与远程文件系统的唯一接口,唯一的解决方案是定期轮询 FTP 文件夹以获取更改。
参见示例 Monitor remote FTP directory。
我想在 FTP 上的目录中添加新文件后立即将文件从 FTP 服务器获取到本地。
我知道可以使用 watchdog observer 查看本地机器目录的变化。
但我想检查 FTP 服务器上的目录更改(添加新文件、删除文件)。
如何实现?
我用来检查本地计算机目录更改的代码:
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import ftplib
import time
class ExampleHandler(FileSystemEventHandler):
def on_created(self, event):
print "Got event for file %s" % event.src_path
session = ftplib.FTP('address','username','password')
path='/directory/to/check'
session.cwd(path)
observer = Observer()
event_handler = ExampleHandler()
observer.schedule(event_handler, path_of_the_directory)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
FTP 协议没有API 通知客户端有关更改。
如果 FTP 是您与远程文件系统的唯一接口,唯一的解决方案是定期轮询 FTP 文件夹以获取更改。
参见示例 Monitor remote FTP directory。