1

我正在尝试使用 ftplib 从大型机解析/下载一些文件,但经过几次尝试后它不成功。

我的代码到目前为止是:

import ftplib
ftp = ftplib.FTP('host','username','password')
ftp.retrlines("File To be Downloaded")

这工作正常,我可以看到所需的文件。

但是,当我使用以下代码时。

ftp.retrbinary("RETR 'File_Name'",open('ww.txt','wb').write)

它失败并出现以下错误。

error_reply: 200 表示类型是图像

根据 Dag 的响应,我尝试了以下代码通过“retrlines”下载文件。

ftp.retrlines("RETR 'File_Name'",open('ww.txt','wb').write)

但它给了我以下错误。

error_reply: 200 表示类型是 Ascii NonPrint

4

2 回答 2

0

尝试在 Python 脚本中显式设置“TYPE”:

http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.halu001%2Ftype.htm

我猜除非您指定类型,否则默认值可能是“ASCII”。大多数二进制 FTP 传输的流行最爱是“BINARY”。我不确定什么最适合您的系统:也许是“图像”?

另外:查看此链接:使用 Python 和 ftplib.FTP 从 z/os 下载文本文件

于 2013-05-24T20:29:18.890 回答
0

预期的结果是什么?Retrlines 将文件作为文本读取,这对于文本文件是正确的。Retrbinary 将文件检索为二进制文件。如果您使用 EBCDIC 而不是 ASCII 来定位大型机,这是一个坏主意,并且可能是您获得此结果代码的原因(根据 FTP 规范,这不是错误)。

于 2013-05-24T20:34:32.047 回答