我正在尝试在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。
答案 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()