python实现监控一个文件夹中的内容,如果有新文件生成,通过接口http://192.168.1.226:5000/dezip将新文件上传
时间: 2024-01-28 07:05:47 浏览: 118
要实现监控文件夹中的内容,并在有新文件生成时通过 HTTP 接口上传文件,你可以使用 `watchdog` 库来监控文件夹的变化,并使用 `requests` 库来进行文件上传。下面是一个示例代码:
```python
import time
import requests
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class FileUploadHandler(FileSystemEventHandler):
def __init__(self, upload_url):
self.upload_url = upload_url
def on_created(self, event):
if not event.is_directory:
file_path = event.src_path
self.upload_file(file_path)
def upload_file(self, file_path):
with open(file_path, 'rb') as file:
files = {'file': file}
try:
response = requests.post(self.upload_url, files=files)
response.raise_for_status()
print(f"File uploaded successfully: {file_path}")
except requests.exceptions.RequestException as e:
print(f"Failed to upload file: {file_path}\nError: {e}")
# 监控的文件夹路径和上传的接口URL
folder_path = '/path/to/folder'
upload_url = 'http://192.168.1.226:5000/dezip'
# 创建监控器和事件处理器
event_handler = FileUploadHandler(upload_url)
observer = Observer()
observer.schedule(event_handler, folder_path, recursive=False)
# 启动监控器
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
```
在上述代码中,你需要替换 `folder_path` 为要监控的文件夹路径,替换 `upload_url` 为你的文件上传接口的URL。
代码中的 `FileUploadHandler` 类继承自 `FileSystemEventHandler`,并重写了 `on_created` 方法,当有文件被创建时会触发该方法。在 `on_created` 方法中,我们调用 `upload_file` 方法来上传新创建的文件。
`upload_file` 方法使用 `requests` 库发送 POST 请求,将文件作为 `multipart/form-data` 形式上传到指定的接口。如果上传成功,会打印上传成功的消息;如果上传失败,会打印上传失败的消息。
最后,我们创建了一个 `Observer` 对象并将其与 `FileUploadHandler` 关联起来,并启动监控器。监控器会不断扫描文件夹中的变化,当有新文件被创建时,会触发相应的事件处理方法。
请确保已安装 `watchdog` 和 `requests` 库,可以使用以下命令进行安装:
```
pip install watchdog requests
```
如果你需要进一步的帮助,请提供更多详细信息。
阅读全文