Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用NOOP命令检查FTP连接是否有效_Python_Ftp_Ftplib_Noop - Fatal编程技术网

Python 使用NOOP命令检查FTP连接是否有效

Python 使用NOOP命令检查FTP连接是否有效,python,ftp,ftplib,noop,Python,Ftp,Ftplib,Noop,在长批量作业期间,我的一个脚本似乎与FTP断开连接,这使我遇到了麻烦。为了解决这个问题,我尝试制作一个模块,如下所示: def connect_ftp(ftp): print "ftp1" starttime = time.time() retry = False try: ftp.voidcmd("NOOP") print "ftp2" except: retry = True print

在长批量作业期间,我的一个脚本似乎与FTP断开连接,这使我遇到了麻烦。为了解决这个问题,我尝试制作一个模块,如下所示:

def connect_ftp(ftp):
    print "ftp1"
    starttime = time.time()
    retry = False
    try:
        ftp.voidcmd("NOOP")
        print "ftp2"
    except:
        retry = True
        print "ftp3"
    print "ftp4"
    while (retry):
        try:
            print "ftp5"
            ftp.connect()
            ftp.login('LOGIN', 'CENSORED')
            print "ftp6"
            retry = False
            print "ftp7"
        except IOError as e:
            print "ftp8"
            retry = True
            sys.stdout.write("\rTime disconnected - "+str(time.time()-starttime))
            sys.stdout.flush()
            print "ftp9"
我仅使用以下命令调用函数:

ftp = ftplib.FTP('CENSORED')
connect_ftp(ftp)
但是,我已经使用
print
行跟踪了代码是如何运行的,并且在第一次使用模块时(在FTP连接到之前),我的脚本运行FTP.voidcmd(“NOOP”),并且没有将其排除,因此最初没有尝试连接到FTP

输出为:

ftp1
ftp2
ftp4
ftp success #this is ran after the module is called
我承认我的代码不是最好的或最漂亮的,我还没有实现任何东西来确保如果我一直无法重新连接,我不会经常重新连接,但我不明白为什么这对我的一生都不起作用,所以我还不认为扩展模块有什么意义。这是连接/重新连接到FTP的最佳方法吗


提前感谢

连接到服务器:

ftp = ftplib.FTP('CENSORED')
因此,
NOOP
命令自然会成功,因为它不需要经过身份验证的连接


您的
connect\u ftp
是正确的,只是您需要在
connect
呼叫中指定主机名。

我已根据请求修改了问题。我还按照建议交换了.connect()和login()@martinprikryl只有像connect_ftp(ftp)@martinprikryl这样简单的东西没有登录?connect和login在ftp中是两个独立的东西
NOOP
命令不需要经过身份验证的连接。伙计,这让我大吃一惊,我几乎气疯了它这么简单。抱歉浪费你的时间,伙计。