首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyDev中的Stdin (LiClipse)

PyDev中的Stdin (LiClipse)
EN

Stack Overflow用户
提问于 2017-08-23 19:48:46
回答 2查看 391关注 0票数 0

我在LiClipse(Eclipse)中使用这个脚本有问题

代码语言:javascript
复制
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吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 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使用一些不同的标记) --另一种方法是直接从文件中读取它,而不是从标准输入中读取。

票数 0
EN

Stack Overflow用户

发布于 2018-11-04 00:46:00

我遇到了同样的问题。我正在使用sys.stdin.readlines()。我按照[https://stackoverflow.com/a/31287752/4586180][1]中的说明配置eclipse以读取输入文件

我还选中了“如果需要创建控制台”的复选框。在readlines()之后,我可以在控制台中输入^d。这导致readline()完成

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

https://stackoverflow.com/questions/45838908

复制
相关文章

相似问题

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