我在LiClipse(Eclipse)中使用这个脚本有问题
import stdio
import stddraw
# Read x and y scales from standard input, and configure standard
# draw accordingly. Then read points from standard input until
# end-of-file, and plot them on standard draw.
x0 = stdio.readFloat()
y0 = stdio.readFloat()
x1 = stdio.readFloat()
y1 = stdio.readFloat()
stddraw.setXscale(x0, x1)
stddraw.setYscale(y0, y1)
# Read and plot the points.
stddraw.setPenRadius(0.0)
while not stdio.isEmpty():
x = stdio.readFloat()
y = stdio.readFloat()
stddraw.point(x, y)
stddraw.show()我使用this file作为“运行配置”中的“输入文件”。
我得到一个黑色的stddraw窗口,它没有响应。如果我在LiClipse控制台中输入"Ctrl-Z“,我有时会得到一个结果。
我已经在调试器中运行了这个脚本-它在usa.txt的最后一行行停止(使用运算符“stdio.py = sys.stdin.readline()")。
我已经在Geany中运行了这个文件--它是有效的!
这是PyDeve (Eclipse)中的一个bug吗?
谢谢!
发布于 2017-09-05 19:35:15
问题是sys.stdin.readline()会一直等待输入...在Eclipse上的stdin实现直到程序实际完成才会给你一个EOF (如果你把print放在sys.stdin.readline()后面,你会看到当你在Eclipse中实际杀死程序时,它会打印最后一件事)……我不确定我会不会认为这是个bug。也许它可以是一个特性(即:读取输入文件后关闭stdin ) --它主要是一个实现细节,当您在控制台中输入某些内容时,它将稍后关闭stdin (在Eclipse上,提供一个输入文件将为您提供输入,但将使stdin保持打开状态,以便用户稍后添加更多内容)。
作为一种变通方法,我的建议是放入一个空行,然后检查从sys.stdin.readline().strip()返回的行是否为空--如果是,则认为它已到达EOF (或对EOF使用一些不同的标记) --另一种方法是直接从文件中读取它,而不是从标准输入中读取。
发布于 2018-11-04 00:46:00
我遇到了同样的问题。我正在使用sys.stdin.readlines()。我按照[https://stackoverflow.com/a/31287752/4586180][1]中的说明配置eclipse以读取输入文件
我还选中了“如果需要创建控制台”的复选框。在readlines()之后,我可以在控制台中输入^d。这导致readline()完成
https://stackoverflow.com/questions/45838908
复制相似问题