从大型机通过FTP下载

时间:2013-05-24 20:23:55

标签: python ftp mainframe

我正在尝试使用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

2 个答案:

答案 0 :(得分:0)

尝试在Python脚本中明确设置“TYPE”:

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

我猜测除非你指定一个类型,否则默认值可能是“ASCII”。大多数二进制FTP传输的Pop Favorite是“BINARY”。我不确定什么最适合你的系统:“IMAGE”,也许?

另外:看看这个链接:Downloading text files with Python and ftplib.FTP from z/os

答案 1 :(得分:0)

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