显示 Python FTP 文件上传消息
Show Python FTP file upload messages
我有一个远程 FTP 服务器,我想在其中上传新的固件映像。当使用 Linux ftp
客户端时,我可以使用 put <somefile>
执行此操作,然后服务器响应状态消息,例如:
ftp> put TS252P005.bin flash
local: TS252P005.bin remote: flash
200 PORT command successful
150 Connecting to port 40929
226-File Transfer Complete. Starting Operation:
Checking file integrity...
Updating firmware...
Result: Success
Rebooting...
421 Service not available, remote server has closed connection
38563840 bytes sent in 6.71 secs (5.4779 MB/s)
ftp>
现在我可以使用 Python 上传文件,也可以使用 ftplib:
fw_path = ....
ip = ....
user = ...
pw = ....
with open(fw_path, "rb") as f:
with ftplib.FTP(ip) as ftp:
ftp.login(user=user, passwd=pw)
ftp.storbinary("stor flash", f)
但是我找不到使用 ftp
实用程序获取状态消息的方法。这对我来说很重要,因为我需要检查更新是否真的成功了。
如何在我的 Python 程序中获得此输出?如果 ftplib 做不到,我也愿意使用不同的库。
感谢任何帮助!
如果您想以编程方式检查响应,请检查 FTP.storbinary
的结果:
print(ftp.storbinary("STOR flash", f))
尽管您的服务器实际上在发送完整响应之前就关闭了连接,FTP.storbinary
会引发异常。
如果您想阅读部分回复,您将必须 re-implement FTP.storbinary
的作用。喜欢
ftp.voidcmd('TYPE I')
with ftp.transfercmd("STOR flash") as conn:
while 1:
buf = f.read(8192)
if not buf:
break
conn.sendall(buf)
line = ftp.getline()
print(line)
if line[3:4] == '-':
code = line[:3]
while 1:
nextline = self.getline()
print(nextline)
if nextline[:3] == code and nextline[3:4] != '-':
break
如果您想手动检查响应,请使用 FTP.set_debuglevel
启用日志记录。
我有一个远程 FTP 服务器,我想在其中上传新的固件映像。当使用 Linux ftp
客户端时,我可以使用 put <somefile>
执行此操作,然后服务器响应状态消息,例如:
ftp> put TS252P005.bin flash
local: TS252P005.bin remote: flash
200 PORT command successful
150 Connecting to port 40929
226-File Transfer Complete. Starting Operation:
Checking file integrity...
Updating firmware...
Result: Success
Rebooting...
421 Service not available, remote server has closed connection
38563840 bytes sent in 6.71 secs (5.4779 MB/s)
ftp>
现在我可以使用 Python 上传文件,也可以使用 ftplib:
fw_path = ....
ip = ....
user = ...
pw = ....
with open(fw_path, "rb") as f:
with ftplib.FTP(ip) as ftp:
ftp.login(user=user, passwd=pw)
ftp.storbinary("stor flash", f)
但是我找不到使用 ftp
实用程序获取状态消息的方法。这对我来说很重要,因为我需要检查更新是否真的成功了。
如何在我的 Python 程序中获得此输出?如果 ftplib 做不到,我也愿意使用不同的库。
感谢任何帮助!
如果您想以编程方式检查响应,请检查 FTP.storbinary
的结果:
print(ftp.storbinary("STOR flash", f))
尽管您的服务器实际上在发送完整响应之前就关闭了连接,FTP.storbinary
会引发异常。
如果您想阅读部分回复,您将必须 re-implement FTP.storbinary
的作用。喜欢
ftp.voidcmd('TYPE I')
with ftp.transfercmd("STOR flash") as conn:
while 1:
buf = f.read(8192)
if not buf:
break
conn.sendall(buf)
line = ftp.getline()
print(line)
if line[3:4] == '-':
code = line[:3]
while 1:
nextline = self.getline()
print(nextline)
if nextline[:3] == code and nextline[3:4] != '-':
break
如果您想手动检查响应,请使用 FTP.set_debuglevel
启用日志记录。