此python FTP程序引发奇怪的异常

时间:2018-11-13 18:31:58

标签: python ftp urllib

我有一个非常简单的Python程序,可以正常工作:

from ftplib import FTP

ftp = FTP('ftp.unicamp.br')
ftp.login()
ftp.cwd('pub/libreoffice/flatpak/latest/')

但是,如果我从该路径中删除结尾的斜杠,则会出现此异常:

ftp.cwd('pub/libreoffice/flatpak/latest') # no trailing slash

# Traceback (most recent call last):
#   File "foo.py", line 6, in <module>
#     ftp.cwd('pub/libreoffice/flatpak/latest')
#   File "/home/ian/.asdf/installs/python/3.7.0/lib/python3.7/ftplib.py", line 631, in cwd
#     return self.voidcmd(cmd)
#   File "/home/ian/.asdf/installs/python/3.7.0/lib/python3.7/ftplib.py", line 278, in voidcmd
#     return self.voidresp()
#   File "/home/ian/.asdf/installs/python/3.7.0/lib/python3.7/ftplib.py", line 251, in voidresp
#     resp = self.getresp()
#   File "/home/ian/.asdf/installs/python/3.7.0/lib/python3.7/ftplib.py", line 246, in getresp
#     raise error_perm(resp)
# ftplib.error_perm: 550 pub/libreoffice/flatpak/latest: No such file or directory

问题是我正在像这样使用urllib

import urllib.request
fp = urllib.request.urlopen('ftp://ftp.unicamp.br/pub/libreoffice/flatpak/latest/LibreOffice.flatpak')

并且urllib不包含最后一个斜杠,因此给出了与上述相同的异常。关于如何强制urllib在路径中包含斜杠的任何提示?

1 个答案:

答案 0 :(得分:0)

酒吧内是否有libreoffice文件夹?

如果您浏览并检查pub中的文件夹,您将看到:

ftp.cwd('/pub')
#'250 CWD command successful'

ftp.nlst()
#<class 'list'>: ['GCNET', 'apache', 'apoio', 'banespa', 'biglinux', 'broffice', 'centos', 'ctmq', 'debian', 'downsizing', 'postgresql', 'ppc64el', 'security', 'suporte2', 'FreeBSD', 'deepines', 'gian', 'suporte', 'tdf', 'unix-tools', 'msg.welcome']