免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4487 | 回复: 2
打印 上一主题 下一主题

【已解决】python ftp.cwd 切换目录时报501错误,请求大家帮助一下,多谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-04 20:15 |只看该作者 |倒序浏览
本帖最后由 pythonTester 于 2016-01-05 11:02 编辑

python实现ftp 到ftp服务器,然后切换目录的代码,但是在  红色高亮部分的语句,报错501  ftplib.error_perm: 501 Syntax error in arguments.
remoteDir 是一个  字符串类型变量,存放的路径为 remoteDir =  ' /sysdisk0/xgwconfig'

  class ftpSysOpt_Qwener:
    def __init__(self):
        ##        self.ftpObj = ftplib.FTP()
        self.ftp_threads = []
        self.ftpConnections = {}
        self.xGW = '1.1.1.1'
        pass

  
def _ftp_connect_to(self,task,addr,port,username,passcode,conTimOut=60):
        username = str(username)
        passcode = str(passcode)
        addr = str(addr)
        port = int(port)
        self.ftpConnections[task] = ftplib.FTP()
        try:
            socket.setdefaulttimeout(conTimOut)
            self.ftpConnections[task].set_pasv(True)
            ret = self.ftpConnections[task].connect(addr,port)
            self.print_info(ret)
            ret = self.ftpConnections[task].login(username,passcode)
            self.print_info(ret)
            respInfo = str(self.ftpConnections[task].getwelcome())
            logger.info('FTP login success: %s\n' % respInfo)
            self.print_info(ret)
        except Exception:
            logger.info('FTP login failed..!!\nIncorrect username or password..!!\n')  

def Open_Ftp_Srv(self,task):
        ftpN,ftpPwd,ftpAddr,ftpPort,ftpDir = self._get_xgwFtpInfo()
       self._ftp_connect_to(task,ftpAddr,ftpPort,ftpN,ftpPwd)
        return ftpDir

def Open_Ftp_Dir(self,task):
        currentPath = ''
        remoteDir = self.Open_Ftp_Srv(task)
##        try:
        self.ftpConnections[task].set_debuglevel(2)
        self.ftpConnections[task].pwd()
        self.ftpConnections[task].cwd(remoteDir)
        print 'FILE: Qwener_ftpSrvInfo.log - FTP path: %s \n' % remoteDir
        currentPath = self.ftpConnections[task].pwd()
        print 'FTP Opened Directory: %s \n' % currentPath
##        except Exception:
##            self.error_info('Change the Remote Directory is Failed..!!')
        if '' != currentPath:
            return currentPath
        else:
            raise ValueError, 'Can not get the remote directory..!!\n'


调试结果:
  230 Login successful.
*cmd* 'PWD'
*put* 'PWD\r\n'
*get* '257 "/" is current directory.\r\n'
*resp* '257 "/" is current directory.'
*cmd* 'CWD /sysdisk0/xgwconfig'
*put* 'CWD /sysdisk0/xgwconfig\r\n'
*get* '501 Syntax error in arguments.\r\n'
*resp* '501 Syntax error in arguments.'
Traceback (most recent call last):
  File "<string>", line 138, in run
  File "C:\Python26\Lib\bdb.py", line 368, in run
    exec cmd in globals, locals
  File "D:\00_jenkins\jenkinsPythonLib\ftpSysOpt_Qwener.py", line 187, in <module>
    main()
  File "D:\00_jenkins\jenkinsPythonLib\ftpSysOpt_Qwener.py", line 171, in main
    ftpOptObj.Delete_Cfg_xGW()
  File "D:\00_jenkins\jenkinsPythonLib\ftpSysOpt_Qwener.py", line 156, in Delete_Cfg_xGW
    cfgPath = self.Open_Ftp_Dir(task)
  File "D:\00_jenkins\jenkinsPythonLib\ftpSysOpt_Qwener.py", line 118, in Open_Ftp_Dir
    self.ftpConnections[task].cwd(remoteDir)
  File "C:\Python26\Lib\ftplib.py", line 537, in cwd
    return self.voidcmd(cmd)
  File "C:\Python26\Lib\ftplib.py", line 248, in voidcmd
    return self.voidresp()
  File "C:\Python26\Lib\ftplib.py", line 223, in voidresp
    resp = self.getresp()
  File "C:\Python26\Lib\ftplib.py", line 218, in getresp
    raise error_perm, resp
ftplib.error_perm: 501 Syntax error in arguments.  // 实现看不出,cwd入参有什么语法错误

论坛徽章:
0
2 [报告]
发表于 2016-01-05 11:08 |只看该作者
自查发现:cwd的入参如果填入一个不存在目录,也报错为501 Syntax error...,这个个人觉得不科学,误导人啊!有种想改ftplib库代码的冲动
分析结果:该问题就是cwd入参的目录是一个不存在的目录
分析方法:发帖第二天和朋友沟通,通过手动ftp服务器,发现输入同样的目录,还是报501,才发现
解决方式:(1)使用cwd填入正确的路径/(2)或者使用ftplib.FTP.sendcmd(cd 'path') 亦可

再次分享结果,共同进步,感谢大家,感谢我的这个朋友

论坛徽章:
0
3 [报告]
发表于 2016-01-06 18:05 |只看该作者
补充一下,这个501是ftp服务器返回信息,之前讲了一句“有种想改ftplib库代码的冲动”纯属太郁闷所致
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP