Python ftplib使用方法" ftp.login(变量,变量)"

时间:2016-03-06 06:56:53

标签: python python-2.7 ftp ftp-client ftplib

我想从头开始创建一个ftp客户端。所以我想(将来)获取用户在文本字段中输入的文本并将其存储为变量。稍后当用户点击" Connect"时,程序将获取这些变量并将其用于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. 

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

我尝试使用不同的打印方法,这些方法来自&#34;以艰难的方式学习Python&#34;。 ftp.login(user, pas)ftp.login('%s'%user, '%s'%pas),我甚至创建了单独的变量,重新创建(?)字符串。但到目前为止,唯一有效的方法是将用户名和密码静态写入ftp.login()方法ftp.login('admin','password')

提前致谢!

更新 我按照马丁的建议开启了调试,显然客户端仅发送admin\n而不仅仅是admin。所以我需要做的是在ftp.login()方法中使用它之前删除列表项。

调试消息:

*cmd* 'USER admin\n'
*resp* '451 The parameter is incorrect.'

1 个答案:

答案 0 :(得分:0)

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

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具有该用户名和密码。

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