今天原本计划更换下Python的版本,从2.5升级到2.7, 结果发现很多模块貌似不通,
目前找出其中一个关于ftp模块的区别,查看了python中ftplib模块中的实现,版本间更新导致的
代码中关于ftp的实现:
ftp = FTP()
ftp.connect(ftpip,'')
ftp.login(ftpusername,ftppwd)
ftp.cwd(ftpfolder)
在python2.5中测试通过,然而在2.7版本中运行报错 error: [Errno 10049] The requested address is not valid in its context
通过对比python中ftplib.py中connect() 代码发现
python 2.5中
if host: self.host = host
if port: self.port = port
当传参为 '' 时, self.port将采用默认值
python 2.7中
if host != '':
self.host = host
if port > 0:
self.port = port
当传参为 '' 时, 判断port值大于0,self.port将被赋为''
这就导致之后sock.connect连接失败
目前python2.7以上版本的多数应用中,采用 ftp.connect(ftpip)