首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python模块py3270的AttributeError

使用python模块py3270的AttributeError
EN

Stack Overflow用户
提问于 2019-07-10 17:56:22
回答 1查看 769关注 0票数 0

作为一些自动化的一部分,我正在尝试使用python连接到大型机,在那里我可以访问大型机文件并创建报告。就像使用大型机文件作为DB for python程序一样。

要登录到大型机-我们需要提供主机详细信息(xyz.host.com),然后是区域详细信息(H123p),然后是我们的凭据。

我发现我们可以使用python包py3270来做到这一点,并尝试这样做,但得到了错误。

代码语言:javascript
复制
from py3270 import Emulator

# or not (uses s3270)
em = Emulator()

em.connect('xyx.example.com')
em.fill_field(3, 1, 'xxxx',5)
em.send_enter()
em.fill_field(2, 1, 'xxxxxxx', 7)
em.send_enter()
em.fill_field(8, 20, 'xxxxxxxx', 8)
em.send_enter()

# if your host unlocks the keyboard before truly being ready you can use:
em.wait_for_field()

# maybe look for a status message
if not em.string_found(1, 2, 'login succesful'):
abort()

# do something useful

# disconnect from host and kill subprocess
em.terminate()

错误:

代码语言:javascript
复制
File "C:/Users/vganr/PycharmProjects/test/mainframe.py", line 6, in    
<module>
em = Emulator()
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270  
\__init__.py", line 273, in __init__
self.app = app or self.create_app(visible, args)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270
\__init__.py", line 291, in create_app
return Ws3270App(args)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270   
\__init__.py", line 140, in __init__
self.spawn_app()
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270  
\__init__.py", line 145, in spawn_app
args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,   
stderr=subprocess.PIPE
File "C:\Program Files (x86)\Python37-32\lib\subprocess.py", line 775,   
in __init__
restore_signals, start_new_session)
File "C:\Program Files (x86)\Python37-32\lib\subprocess.py", line 1178,  
in _execute_child
startupinfo)

FileNotFoundError: [WinError 2] The system cannot find the file specified
Exception ignored in: <function Emulator.__del__ at 0x038CB810>
Traceback (most recent call last):
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270     
\__init__.py", line 285, in __del__
self.terminate()
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270   
\__init__.py", line 320, in terminate
if not self.is_terminated:

AttributeError: 'Emulator' object has no attribute 'is_terminated'
EN

回答 1

Stack Overflow用户

发布于 2019-07-10 23:03:09

根据您看到的错误消息,我怀疑您在缺少/未找到x3270/s3270库方面存在问题。

代码语言:javascript
复制
return Ws3270App(args)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270   
\__init__.py", line 140, in __init__
self.spawn_app()
File "C:\Program Files (x86)\Python37-32\lib\site-packages\py3270  
\__init__.py", line 145, in spawn_app
args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,   
stderr=subprocess.PIPE
File "C:\Program Files (x86)\Python37-32\lib\subprocess.py", line 775,   
in __init__
restore_signals, start_new_session)
File "C:\Program Files (x86)\Python37-32\lib\subprocess.py", line 1178,  
in _execute_child
startupinfo)

以上情况表明,该库正在尝试启动x3270的windows版本Ws3270,但无法启动。

确保所需的库在您的path中,并且可以从python中看到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56968173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档