无懒不python:看官方V社区有介绍: 需要安装 Quick Easy FTP Server V4.0.0.exe
为了表示敬意再次放出链接:
V社区-机器智能技术交流-VM关于FTP存图的一点分享
好了VM先放一边 先用python自收 自发: 毕竟这个免费
FTP服务端: 0.ftpserver.py
需要安装的库 和 注意事项已经在注视里面说明;
#pip install pyftpdlib
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
r"""
运行之前需要安装好
#pip install pyftpdlibwin10 复制的的路径是这样的
C:\Users\Administrator\Desktop\FTP路径这么写也没问题
"C:/Users/Administrator/Desktop/FTP/path/to/ftp"
"C:\\Users\\Administrator\\Desktop\\FTP\\path\\to\\ftp"
个人倾向于这种 因为复制过来就这样
r"C:\Users\Administrator\Desktop\FTP"路径格式:Windows系统,路径需要用双反斜杠 \\ 或者原始字符串 r"C:\FTP"。权限问题:确保你的Python脚本有权限访问和写入指定的目录。端口21的权限:默认FTP端口是21,但这个端口需要管理员权限才能监听。你可以选择使用其他端口(如2121),或者以管理员身份运行脚本。用户名、密码、目录
user", "password" "C:/Users/Administrator/Desktop/FTP/path/to/ftp""""def main():# 创建一个授权器,用于管理用户和权限authorizer = DummyAuthorizer()# 添加一个用户(用户名、密码、目录、权限)# 权限说明:# elr = 更改目录、列出文件、读取文件# m = 修改文件(上传、删除、重命名等)authorizer.add_user("user", "password", "C:/Users/Administrator/Desktop/FTP/path/to/ftp", perm="elrmw")# 添加匿名用户(可选)#authorizer.add_anonymous("/path/to/anonymous")# 创建FTP处理器handler = FTPHandlerhandler.authorizer = authorizer# 设置服务器地址和端口 server = FTPServer(("0.0.0.0", 21), handler)# 启动FTP服务器server.serve_forever()if __name__ == "__main__":main()
双击运行它 只要不报错 那么它的效果 和Quick Easy FTP Server V4.0.0.exe 是一样的
好了
接下来继续做 1.ftpupup.py [用于上传图ha片] 且同级目录有一张用于测试的图片
上传不需要安装外部库 标准python3.8 自带的:
#ftplib 不需要安装# authorizer.add_user("user", "password", "C:/Users/Administrator/Desktop/FTP/path/to/ftp", perm="elrmw")from ftplib import FTPdef upload_file_to_ftp(ftp_server, username, password, local_file_path, remote_file_path):"""上传文件到FTP服务器:param ftp_server: FTP服务器地址:param username: 用户名:param password: 密码:param local_file_path: 本地文件路径:param remote_file_path: 远程文件路径"""try:# 创建FTP连接ftp = FTP(ftp_server)ftp.login(username, password)print(f"成功连接到FTP服务器: {ftp_server}")# 打开本地文件with open(local_file_path, 'rb') as file:# 使用STOR命令上传文件ftp.storbinary(f'STOR {remote_file_path}', file)print(f"文件上传成功: {remote_file_path}")except Exception as e:print(f"上传文件时发生错误: {e}")finally:# 关闭FTP连接ftp.quit()print("FTP连接已关闭")import os
import timePlk=os.getcwd() # 示例用法
ftp_server = "127.0.0.1" # 替换为你的FTP服务器地址
username = "user" # 替换为你的FTP用户名
password = "password" # 替换为你的FTP密码
local_file_path = fr"{Plk}/2025-01-21_02_29_24.png" # 替换为本地图片文件路径while True:SaveFileName=time.strftime('%Y-%m-%d_%H_%M_%S');remote_file_path = fr"/{SaveFileName}_ftp.png" # 替换为FTP服务器上的目标路径upload_file_to_ftp(ftp_server, username, password, local_file_path, remote_file_path)time.sleep(2)# 2秒钟 更新一次
#
先运行服务端在运行客户端 可以看到 服务端回显 和 客户端的输出
现在一切正常 打开VM: 拖一个 图像源 脚本 输出图像
图像源设置图像 脚本 输出一个字符串
out0 = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
主要是为了获取当前时间用于保存文件名;
接下来输出图像模块:
输入源肯定是 图像源1.图像
存图使能打开; 保存原图打开;
原图路径设置好
[一定要设置原图路径][当打开启用FTP 时原图路径会作为]
借用V社区的话 原图路径:表示 VM 存图在本地哪个文件夹内,本例是在桌面新建了一个名为“中转站”的文件夹。这也说明了 VM 是先将图片存在本地,然后上载至服务端的逻辑过程。
[如果你的电脑足够慢 你可以清楚的看到 原图路径 在上传ftp的时候出现一张图 又消失]
原图命名 继承自 脚本1.out0[] 也就是上面脚本生成的时间字符串
启用FTP 打开
服务器IP 127.0.0.1
服务器端口:21
用户名:user
密码:password
编码格式:UINCODE
FTP路径:\ [一个反斜杠就是根目录 ][反斜杠后面加字符就会创建文件夹]
连接:打开 [ 网络正常 服务器正常 IP 端口 用户名 密码 编码格式 FTP路径 设置好才能打开]
输出使能:打开
像素格式:RGB24
最后吐槽一下 VM 模块参数 界面做的:
界面尺寸又小 ;选项又多,还不能缩放界面尺寸[左右不能改变尺寸算了上下也不能改变],更多选项只能通过 滚轮 或者滑动条 才能看到设置项
单个模块 一张截图又截不完整 得分好几张图截取 大大的不方便学习;
上截图吧.
py的ftp服务端要运行: VM端点击执行 发现图已经传过去了 效果和1.ftpupup.py 是一样的
最后远程 喊话VM研发 就不能把模块做成这样吗 窗口尺寸可以改变 上下 左右能拖动改变窗口大小 一眼看完所有参数的.??????????? !!!!!
最后 发现VM 运行FTP传图没有python快 猜测是因为负载原因;
但是VM FTP传图厉害的一点是 不管服务器在不在线 存图模块它都可以正常运行不报错 不红 一旦服务器在线 会自动将 没在线运行的图自动传过去.
此致 敬礼;