为什么wget可以使用代理环境变量,但ftplib不能?

时间:2017-08-28 14:58:33

标签: python ftp wget ftplib

我真的很困惑,我确定我错过了一些简单的东西,但我无法理解为什么设置代理环境变量适用于某些功能而不适用于其他功能。库是否以不同的方式响应这些变量?

例如,我通过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()

1 个答案:

答案 0 :(得分:0)

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

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