使用 Python ftplib 处理大型机 PDS 时“站点 sbd”的含义

Posted

技术标签:

【中文标题】使用 Python ftplib 处理大型机 PDS 时“站点 sbd”的含义【英文标题】:Meaning of "site sbd" when working with mainframe PDS using Python ftplib 【发布时间】:2021-02-19 00:07:25 【问题描述】:

我已通过以下链接连接到大型机并从 PDS 中提取文件。

Downloading text files with Python and ftplib.FTP from z/os

但是,我对此有一些疑问:

sess.sendcmd("site sbd=(IBM-1047,ISO8859-1)")

谁能告诉我,它代表什么?当我们写sess.sendcmd("site sbd=....")时,这台机器是特定的还是通用的?

【问题讨论】:

【参考方案1】:

z/OS 上的文本数据(大部分)以 EBCDIC 代码页编码,IBM-1047 就是其中之一。 z/OS FTP 服务器 知道 z/OS 外部的文本数据(大部分)被编码在一些其他(非 EBCDIC)代码页中,例如 ISO8859-1。因此,当以 text (ASCII) 模式(不是二进制或图像模式)传输时,它会转换数据。虽然服务器对 z/OS 端代码页和“网络”端代码页都有一些默认值,但您可以通过以下方式更改该默认值:

SITE SBDATACONN=(file-system-cp,network-cp)

file-system-cp 是 z/OS 端使用的编码,network-cp 是通过网络发送数据的编码,即您的非 z/OS 编码。

【讨论】:

以上是关于使用 Python ftplib 处理大型机 PDS 时“站点 sbd”的含义的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中处理大型 JSON 数据

如何防止在 Python 中使用 FTPLIB 覆盖现有文件?

python:使用ftplib编写FTP客户端

Python 3 ftplib错误“名称或服务未知”

Python ftplib模块

使用python ftplib包递归下载文件夹及文件