Kif*_*sif 34 python eof python-3.x sublimetext2
while True:
reply = input('Enter text')
if reply == 'stop': break
print(reply.upper())
Run Code Online (Sandbox Code Playgroud)
结果是:
Run Code Online (Sandbox Code Playgroud)Enter text:Traceback (most recent call last): File "C:\PythonProjects\5.py", line 2, in <module> reply = input('Enter text:') EOFError: EOF when reading a line [Finished in 0.2s with exit code 1]
它只在Sublime Text 2.我试过IDLE,试过命令行,一切都很完美.为什么Subleme会对我大喊大叫?
顺便说一句,也许你也可以解释我在这种情况下可能意味着什么.当然,我在文档中已经读过,如果从输入中读取EOF,则会引发相应的错误.我想模仿这种情况.仅输入键盘?如果是,我应该输入什么组合键才能获得EOF?
先感谢您.
nne*_*neo 10
EOF是一种特殊的带外信号,意味着输入结束.它不是一个角色(虽然在旧的DOS时代,0x1B的行为类似于EOF),而是来自操作系统的输入结束的信号.
在Windows上,您可以通过Ctrl+Z在命令提示符下按"输入"EOF .这向终端发信号以关闭输入流,该输入流向正在运行的程序呈现EOF.请注意,在其他操作系统或终端仿真器上,通常使用EFF信号通知Ctrl+D.
至于Sublime Text 2的问题,stdin在Sublime中运行程序时似乎没有连接到终端,因此程序开始连接到空文件(可能nul或者/dev/null).另请参见Python 3.1和Sublime Text 2错误.
jfs*_*jfs 10
help(input)显示了哪些键盘快捷键产生EOF,即Unix : Ctrl-D,Windows Ctrl-Z+Return::
输入([提示]) - >字符串
从标准输入中读取字符串.删除尾随换行符.如果用户点击EOF(Unix:Ctl-D,Windows:Ctl-Z + Return),则引发EOFError.在Unix上,如果启用,则使用GNU readline.如果给出了提示字符串,则在读取之前打印时不带尾随换行符.
您可以使用空文件重现它:
$ touch empty
$ python3 -c "input()" < empty
Traceback (most recent call last):
File "<string>", line 1, in <module>
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud)
您可以使用/dev/null或nul(Windows)作为空文件进行阅读.os.devnull显示您的操作系统使用的名称:
$ python3 -c "import os; print(os.devnull)"
/dev/null
Run Code Online (Sandbox Code Playgroud)
注意:input()愉快地接受来自文件/管道的输入.您无需stdin连接到终端:
$ echo abc | python3 -c "print(input()[::-1])"
cba
Run Code Online (Sandbox Code Playgroud)
处理EOFError代码:
try:
reply = input('Enter text')
except EOFError:
break
Run Code Online (Sandbox Code Playgroud)
或者将编辑器配置为在运行脚本时提供非空输入,例如,如果允许,则使用自定义命令行: python3 "%f" < input_file
到目前为止,唯一的解决方案仍然是安装SublimeREPL.
为了扩展Raghav的答案,每次要使用输入运行脚本时都必须进入Tools-> SublimeREPL-> Python-> Run命令会非常烦人,所以我设计了一个方便的快速键绑定:
要启用它,请转到首选项 - >键绑定 - 用户,并在其中复制:
[
{"keys":["ctrl+r"] ,
"caption": "SublimeREPL: Python - RUN current file",
"command": "run_existing_window_command",
"args":
{
"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"
}
},
]
Run Code Online (Sandbox Code Playgroud)
当然,您只需更改"keys"参数即可将快捷方式更改为您想要的任何内容.
| 归档时间: |
|
| 查看次数: |
107606 次 |
| 最近记录: |