【问题标题】:Why can wget use proxy environment variables but ftplib cannot?为什么 wget 可以使用代理环境变量而 ftplib 不能?
【发布时间】:2017-08-28 14:58:33
【问题描述】:

我真的很困惑,我确定我遗漏了一些简单的东西,但我不明白为什么设置代理环境变量对某些函数有效,而对其他函数无效。是图书馆对这些变量的反应不同吗?

例如,我通过 ftp 来回传输文件。当我用wget下载的时候,我设置了代理环境变量,然后下载,然后说我想用ftplib放回去,它得到[Errno 11001],我需要专门通过ftplib传递这些代理详细信息吗?

假设我是这样设置的,我可以下载文件就好了:

# setup proxy
os.environ["ftp_proxy"] = 
"http://****:****@proxyfarm.****.com:8080"
os.environ["http_proxy"] = 
"http://****:****@proxyfarm.****.com:8080"
os.environ["https_proxy"] = 
"http://****:****@proxyfarm.****.com:8080"

src = "ftp://****:****@ftp.blackrock.com/****/****.csv"
out = "C:\\outFolder\\outFileName.txt" # out is optional

# create output folder if it doesn't exists
outFolder, _ = os.path.split( out )
try:
    os.makedirs(outFolder)
except OSError as exc: # Python >2.5
    if exc.errno == errno.EEXIST and os.path.isdir(outFolder):
        pass
    else: raise

# download
filename = wget.download(src, out)

现在紧接着,我切换到 ftplib,我得到 [Errno 11001],我需要专门为 ftplib 重置代理参数吗?

session = ftplib.FTP('ftp.blackrock.com','****','****')
file = open(filename,'rb')                  # file to send
session.storbinary('STOR '+ remotePath + filename, file)     # send the file
file.close()                                    # close file and FTP
session.quit()

【问题讨论】:

    标签: python ftp wget ftplib


    【解决方案1】:

    ftp_proxy(和其他人)是proprietary feature of the wget。

    您不能期望它可以与任何其他 FTP 库/软件一起使用。

    【讨论】:

    • 啊,明白了,我想我正在阅读 os.environ 而不是将其视为在 wget 中全局设置“http_proxy”。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-06-26
    • 2023-01-27
    • 2021-04-20
    • 1970-01-01
    • 2022-10-26
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多