在Anaconda Spyder中的Python 3.6中使用大型机数据集

时间:2019-05-15 10:27:50

标签: python-3.6 mainframe

我正在尝试在Python3.6中读写大型机数据集数据。我正在使用Anaconda的Spyder(版本3.2.4)。我正在使用Zosftplib来导入大型机功能。下面是代码片段:     导入zosftplib     Myzftp = zosftplib.Zftp(“ IP地址-大型机”,“用户名”,“密码”)     mf_file =打开(“大型机ps文件名”,“ r +”)     ffa = mf_file.read(16);     打印(“读取记录为:”,ffa)     mf_file.close()

大型机PS文件名包含1条数据为0010021023457893的记录。但是我得到的输出是Spyder内核中的空格。我也尝试使用ftplib,但是它在那里也没有用。我认为需要进行转换,因为它不是我正在阅读的文本文件。有人对此有何建议。请回复。谢谢

通过FTPLIB和Zosftplib导入

import zosftplib
Myzftp = zosftplib.Zftp("ip address-mainframe","username","password")
mf_file = open("mainframe ps file-name", 'r+')
ffa = mf_file.read(16);
print ("Read record is :", ffa)
mf_file.close()

读取和打印文件后,预期结果应为0010021023457893。

1 个答案:

答案 0 :(得分:1)

zosftplib软件包将为您提供对z / OS上的数据集的ftp访问,这意味着您可以下载它,但必须在本地打开它。另外,您需要了解本地计算机和z / OS环境之间的编码差异,因此应指定sbdataconn()参数来提供代码页转换。我可以使用以下代码执行您想要的操作:

import zosftplib

Myzftp = zosftplib.Zftp('mainframe_ip', 
                        'mainframe_userid', 
                        'mainframe_password',
                        timeout=500.0, 
                        sbdataconn='(ibm-1147,iso8859-1)')
Myzftp.download_text('mainframe_dataset_name', '/tmp/local_filename.txt')

mf_file = open('/tmp/local_filename.txt', 'r+')
ffa = mf_file.read(16);
print ("Read record is :", ffa)
mf_file.close()