Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过FTP从大型机下载_Python_Ftp_Mainframe - Fatal编程技术网

Python 通过FTP从大型机下载

Python 通过FTP从大型机下载,python,ftp,mainframe,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) 它失败了,出现以

我正在尝试使用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)
它失败了,出现以下错误

错误\答复:200表示类型为图像

基于Dag的响应,我尝试使用以下代码通过Retrline下载文件

ftp.retrlines("RETR 'File_Name'",open('ww.txt','wb').write)
但它给了我以下的错误


错误\u回复:200表示类型为Ascii非打印

请尝试在Python脚本中显式设置类型:

我猜,除非指定类型,否则默认值可能是ASCII。大多数二进制FTP传输最受欢迎的是二进制文件。我不确定什么最适合您的系统:图像,也许


另外:查看此链接:。

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

Hi Dag,是的,文件格式是EBCDIC而不是ASCII。所需的fromat是CSV或EXCEL。解析时是否需要使用编码。不确定写入.CSV文件时如何执行。应使用Retrline、Excel xls作为二进制文件和Excel xlsx作为文本检索.CSV文件。在第二个示例中,当第一个使用retrlines的示例起作用时,为什么要尝试将文件作为二进制文件下载?谢谢Dag。试过了,我用的代码是ftp.retrlinesRETR文件名,打开“ww.txt”,“wb”。写下,但它给了我以下错误。错误_回复:200表示类型为Ascii非打印这可能是ftplib中的错误。您能否在ftplib set_debuglevel 1或2中启用调试,并将输出附加到您的问题中?请记住在发布之前从日志中删除所有登录详细信息。谢谢Dag。这里有些东西起作用了。我假设我给出的输出文件名拼错了。再次感谢。嗨,保罗,不知道如何设置类型或编解码器。你能解释一下文学作品吗。