我想运行一个python脚本并捕获文本文件的输出以及想要在控制台上显示.
我想将它指定为python脚本本身的属性.不要echo "hello world" | tee test.txt每次都在命令提示符上使用该命令.
在脚本中我试过:
sys.stdout = open('log.txt','w')
Run Code Online (Sandbox Code Playgroud)
但是这并没有在屏幕上显示stdout输出.
我听说过记录模块,但是我无法使用该模块来完成这项工作.
我想知道是否有人可以解释为什么在Python交互模式下突然出现所有箭头键失败?
当我按下按钮例如通过命令历史记录时,我得到"^ [[A".与任何其他箭头键相同.
我不知道为什么会发生这种情况并且之前有效(在OS X Snow Leopard上).有谁知道解决这个问题的方法?
非常感谢,
G
我们一直在努力了解Linux中的键盘扫描码行为.
当我们打开一个普通的bash shell时,箭头键按预期工作:UP显示历史记录中的上一个项目等.但是,当您生成一个进程时,箭头不再按预期工作.例如,UP打印^ [[A而不是上一个命令.
要证明这一点,请执行以下操作:
bash $ ping www.google.com
现在,按UP或DOWN等等,您将在进程运行时看到错误映射的密钥代码.但是,当您终止该过程时,箭头键将再次起作用.
我们已经在CentOs,Ubuntu,Mac甚至是不同的shell(bash,sh,zsh)上测试过它,并且在任何地方都会发生同样的情况.我还尝试了使用kbd_mode的不同键盘模式,我们使用RAW和XLATE模式进行了测试.
在搜索答案时我能看到的最接近的东西是当IPython没有针对readline构建时,IPython用户经历了相同的行为.但是,据我所知,这与我们的案例无关.
我们正在开发一个基于C++ Tcl的控制台应用程序,它使用cin和cout与用户进行通信并获取输入.当我们尝试访问先前输入的命令的历史记录时,我们遇到箭头键问题.这对我们来说是一个主要问题,因为99%的人都希望箭头角色能够正常工作.
关于我们如何克服这一点的任何想法都将非常感激.
我在 Docker 中有一个 Django 服务器,并且希望能够远程调试我的脚本。箭头键不起作用。我越来越
(Pdb) ^[[A
Run Code Online (Sandbox Code Playgroud)
而不是有用的东西。我只是在 Ubuntu 上使用普通终端。没有 IDE 或任何奇特的东西。
正如这里所述,我重写了我的 docker-compose 并且它可以很好地使用此行:
__import__("remote_pdb").set_trace(host='0.0.0.0', port=4444)
Run Code Online (Sandbox Code Playgroud)
通过 telnet,我可以使用pdb 的大多数telnet 0.0.0.0 4444功能:
不起作用的是箭头键。有人也遇到了这个问题,我安装了readline,因为这个人也遇到了同样的问题:Python 交互模式历史记录和箭头键
dnf install ncurses-devel
pip3 install readline
Run Code Online (Sandbox Code Playgroud)
没有变化。(安装有效。我可以导入readline)。我假设问题可能来自 telnet。所以我正在考虑切换到ssh -t。
但现在我应该登录:
ssh -t 0.0.0.0 -P 4444
qohelet@0.0.0.0's password:
Run Code Online (Sandbox Code Playgroud)
没有密码。这只是一个 Docker。我也不知道用户名。
我一直在寻找,2017 年刚刚打来电话。我应该使用gnureadline。没有不同:
(Pdb) import gnureadline
(Pdb) ^[[A
Run Code Online (Sandbox Code Playgroud)
我现在被困住了。