Python ftplib 使用方法 "ftp.login(variable, variable)" 登录到 ftp 服务器



我想从头开始创建一个ftp客户端。 所以我想(将来)获取用户在文本字段中输入的文本并将其存储为变量。稍后,当用户单击"连接"时,程序将获取这些变量并将其用于ftp.login(user, pas)中的凭据

这是我下面的代码:

from ftplib import FTP
import ftplib
user = 'admin'
pas = 'password'
try:
    ftp = FTP('allpcexperts.com')
    print 'using %s : %s'%(user,pas)
    ftp.login(user,pas)
    print "Success: %s:%s" %(user, pas)
except ftplib.error_perm as error:
    if error:
        print 'Login Failed'

这与所有其他打印字符串的方法一起给了我同样的错误:

Traceback (most recent call last):
  File "ftp.py", line 10, in <module>
    ftp.login(user,pas)
  File "/usr/lib/python2.7/ftplib.py", line 392, in login
    resp = self.sendcmd('USER ' + user)
  File "/usr/lib/python2.7/ftplib.py", line 249, in sendcmd
    return self.getresp()
  File "/usr/lib/python2.7/ftplib.py", line 222, in getresp
    raise error_temp, resp
ftplib.error_temp: 451 The parameter is incorrect. 

现在,显然我没有做太多工作,我想在创建程序的 GUI 部分之前"动态"登录。

我尝试使用"学习Python的艰难方式"中教授的不同打印方法。 ftp.login(user, pas)ftp.login('%s'%user, '%s'%pas),我什至制作了单独的变量来重新创建(?)字符串。但到目前为止,唯一有效的方法是将用户名和密码静态写入ftp.login()方法中,例如ftp.login('admin','password') .

提前感谢!

更新我按照 Martin 的建议打开了调试,显然客户端正在发送adminn而不仅仅是单独admin。因此,我需要做的是在ftp.login()方法中使用它之前剥离列表项。

调试消息:

*cmd* 'USER adminn'
*resp* '451 The parameter is incorrect.'

尝试上面的代码(或多或少),我得到:

In [1]: from ftplib import FTP
In [2]: import ftplib
In [3]:
In [3]: user = 'admin'
In [4]: pas = 'password'
In [5]: try:
   ...:     ftp = FTP('allpcexperts.com')
   ...:     ftp.login(user,pas)
   ...: except ftplib.error_perm as error:
   ...:     print error
   ...:
530 User cannot log in. 

用户名和密码的530预期。

因此,我建议您从上面发布的代码开始,并替换真正有效的用户名和密码对。

最新更新