我正在尝试使用Python的ftplib读取文件,而不写入它们。 大致相当于:
def get_page(url):
try:
return urllib.urlopen(url).read()
except:
return ""
但是使用FTP。
我尝试过:
def get_page(path):
try:
ftp = FTP('ftp.site.com', 'anonymous', 'passwd')
return ftp.retrbinary('RETR '+path, open('page').read())
except:
return ''
但是这种方法不起作用。文档中唯一的示例都涉及使用ftp.retrbinary('RETR README', open('README', 'wb').write)
格式编写文件。是否可能在不先写入的情况下读取FTP文件?
ftp.retelines(f'RETR {filename}')
,但它返回了一个BrokenPipeError错误,回溯显示文件编码存在问题(在putline函数的self.sock.sendall(line.encode(self.encoding))
处)。我正在尝试获取的文件是md5哈希值(链接:ftp://ftp.ncbi.nlm.nih.gov/pubmed/baseline/pubmed23n0003.xml.gz.md5)。 - jimmymcheungretrbinary
并注释掉retrlines
脚本,因为我仔细阅读了文档并发现retrlines
不以“字符串”模式读取文件)。 - jimmymcheung