仅在WSL

时间:2019-03-18 15:04:30

标签: python windows-subsystem-for-linux eoferror

我有一个基本脚本,我正在WSL终端(Ubuntu 18.04)中运行该脚本,该脚本从用户那里获得2个输入来创建电子邮件,从本质上讲,它首先获得消息,然后由服务器使用。

它首先提示您输入消息,并允许用户输入输入内容,这很好。然后,它会在消息中进行正则表达式搜索,如果找不到该服务器名,则会提示输入该服务器名,但是,每次执行该命令时,都会出现一个EOFError,我找不到原因。

ServerTraceback (most recent call last):
File "/home/dev/bin/script", line 155, in <module>
create_report()
File "/home/dev/bin/script", line 98, in create_report
servername=get_servername()
File "/home/dev/bin/script", line 10, in get_servername
servername = raw_input("Server")
EOFError

奇怪的是,如果我使用python2 -i / home / dev / bin / script运行相同的脚本,那么它可以工作,但是从WSL终端上它会出现EOFError。

任何帮助将不胜感激,我是新来的,对正在发生的事情有些迷茫。

这是第二个输入,它会产生EOFError

def get_servername():
servername = raw_input("Server")
return servername

从strace中我也看到了这一点

26004 read(3, "log_info(\"Parsing report for IPs"..., 512) = 512
26004 read(3, " break\nif not servername:\n    lo"..., 512) = 512
26004 write(2, "    ", 4)               = 4
26004 write(2, "servername = raw_input(\"Server N"..., 40) = 40
26004 close(3)                          = 0
26004 write(2, "EOFError", 8)           = 8
26004 write(2, "\n", 1)                 = 1
26004 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fc31ec3ef20}, {sa_handler=0x7fc31f76c130, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fc31ec3ef20}, 8) = 0
26004 exit_group(1)                     = ?
26004 +++ exited with 1 +++

该脚本在“交互”模式下也可以在Linux计算机上直接运行时正常工作。

我不确定,但是我认为stdin的设置不正确或类似?

任何帮助都将不胜感激。

0 个答案:

没有答案