如何使用Python的requests库实现FTP?

6

是否可以使用requests模块与FTP站点进行交互?requests非常方便地获取HTTP页面,但是当我尝试使用FTP站点时似乎会出现模式错误。

requests是否有一些我所不知道的功能来允许我进行FTP请求,或者它不支持FTP?


1
你是在寻找HTTP交互还是直接FTP协议?如果是的话,最好使用ftplib。假设这是一个选项。Requests不支持FTP,所以如果你想要类似于requests的东西,你需要使用urllib2。 - Bob
1
我之前使用requests进行HTTP交互,并希望也能用它来进行FTP操作,因为requests使用起来非常简单。如果这不可行,那么我将尝试使用ftplib来进行FTP传输。 - zephyrthenoble
1
如果你需要在远程机器和本地机器之间传输文件,那么你应该使用ftplib。它非常简单,语法用法几乎与requests相同。如果你需要sftp,则可以考虑paramiko。否则,使用ftplib就足够了。 - Bob
1个回答

3

对于像我一样查看这个答案的人,可以使用SO的另一个问题的此答案

它使用了urllib.request方法。

一个简单请求的片段如下(使用Python 3):

import shutil
import urllib.request as request
from contextlib import closing
from urllib.error import URLError

url = "ftp://ftp.myurl.com"
try:
    with closing(request.urlopen(url)) as r:
        with open('file', 'wb') as f:
            shutil.copyfileobj(r, f)
except URLError as e:
    if e.reason.find('No such file or directory') >= 0:
        raise Exception('FileNotFound')
    else:
        raise Exception(f'Something else happened. "{e.reason}"')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接