【问题标题】:Downloading csv file from FTP server从 FTP 服务器下载 csv 文件
【发布时间】:2018-02-15 01:15:14
【问题描述】:

我希望每天晚上从我们的 FTP 下载一个 csv 文件。当我尝试运行脚本说“socket.gaierror:[Errno 11001] getaddrinfo failed”时出现错误。这是我正在使用的代码:

import ftplib


ftp = ftplib.FTP('http://192.168.0.00', 'username', 'password')
files = ftp.dir('/')
ftp.cwd("/")
filematch = '*.csv'
target_dir = '/path/to/csv/file'
import os

for filename in ftp.nlst(filematch):
    target_file_name = os.path.join(target_dir,os.path.basename(filename))
    with open(target_file_name,'wb') as fhandle:
            ftp.retrbinary('RETR %s' %filename, fhandle.write)

不确定我的代码到底有什么问题。可能是目录格式,还是 FTP 格式?

谢谢!

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    签名ftplib.FTP()

      ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])
    

    所以你需要提供一个 hostname 作为第一个参数,而不是 URL

    做起来

    ftp = ftplib.FTP('192.168.0.00', 'username', 'password')
    

    附:真的是192.168.0.0000 作为最后一个八位位组吗?

    【讨论】:

    • 谢谢!我不再收到错误消息,但由于某种原因,我看不到我下载的文件。当我通过命令提示符运行脚本时,它会返回几行“drwxr-xr-x”,后跟 FTP 中的不同文件夹名称。
    • 不,这只是我提供的一个示例 IP。