Эта программа Python FTP выдает странное исключение - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть очень простая программа на 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 голосов
/ 13 ноября 2018

Есть ли у вас папка libreoffice внутри паба?

если вы перейдете в папку паба и увидите папки внутри, вы увидите:

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']
...