在使用ftp上传文件的过程中发现程序很久不结束,起初以为是缓冲区设置过小导致传输速度变慢,但是几个小时都不见结束,通过查看ftp盘的文件发现文件上传其实已经结束,可是程序却没有结束
其实通过ftp上传文件会建立两个tcp连接,一条控制连接用来提交指令和接受回复,另一条数据连接是用来传输数据的,当指令发布完成后,控制连接会进入空闲状态,tcp不会对空闲状态的连接有时间限制,但是防火墙会提前杀掉空闲连接,并且数据连接是不感知的,所以文件传输完成的通知就不会被感知从而导致程序卡死
分享一下python的ftplib传输文件以及查看ftp盘文件信息的代码
# 上传文件
import ftplib
import sys
import datetime
today = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
yesterday = today - datetime.timedelta(days=1)
f=ftplib.FTP("ip") # 实例化FTP对象
f.login("user", "password") # 登录
def ftp_upload():
file_remote="filename" # 指定上传文件名
file_local="" # 要上传的文件路径
bufsize=2048 # 设置缓冲器大小
fp=open(file_local, 'rb')
result=f.storbinary("