python的创造性stdin和错误处理

2024-04-20 06:51:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Windows10上使用了一个第三方程序——称之为SuckySoftware.exe

这个程序可以启动python脚本并执行其他操作

当它启动python脚本时,不幸的是我没有启动命令窗口。这就产生了三个问题:

1)我不能给它输入。例如,使用python3并将“input()”作为命令之一会导致SuckySoftware.exe挂起,因为它正在等待某个不存在的命令窗口的输入

2)我无法获得输出。所以“print('hello')”不会出现在任何地方

3)没有错误处理。因此,如果我的python代码中有一个ValueError,它会在这一行默默地失败,并且不会执行python的其余部分

我通过以下步骤解决了#2:

sys.stdout = open(logfile, 'wb', 0)
sys.stdout.write('hello'.encode('utf-8'))

然后使用mTail对日志文件进行实时监控

我不知道怎么解1或3

对于1,我想知道是否有一个简单的方法来启动一个带有一个文本框的简单GUI。每当我的日志文件显示“请输入一个值”时,我就可以把它输入到文本框中,然后按回车键,它就会在stdin上显示它。然而,这似乎过于复杂

对于3,我想知道是否可以捕获所有错误消息(包括失败的行号),并在脚本退出之前将它们打印到stdout

想法


Tags: 文件命令程序脚本helloinput地方stdout
1条回答
网友
1楼 · 发布于 2024-04-20 06:51:33

首先,打开一个文件作为sys.stderr,因为那里的输出在任何情况下都可能有用

  1. 最简单、最可移植的技术是将sys.stdin设置为与另一个进程的(TCP,又称SOCK_STREAM)套接字连接
  2. 您也可以使用sys.stdout和/或sys.stderr这样的套接字,不过helper进程必须使用select来处理多个流而不发生死锁(您可能希望使用包装器作为sys.stderr来保留其未缓冲状态。)
  3. sys.excepthook分配一个函数,该函数通过(您的)stderr报告异常(可能已经有东西分配了这样一个函数,因为在sys.stderr上没有显示任何内容。)

相关问题 更多 >