所以我在 ipython 中使用 exec() 函数。我制作了这个函数 hardshell(),它在循环中执行来自终端输入的命令。
我的目标是创建一个可以执行各种命令的循环,除了仅在特定退出命令“shellbreak”的帮助下退出循环
在进行了一些实验之后,出现了一个奇怪的行为,其中不仅退出了循环,而且 ipython 本身也退出了。我设法重现了这种情况,但是如果我遗漏了一些命令,这似乎与 ipython 的崩溃没有任何关系
这是来自我的 ipython 控制台的代码:
In [7]: def hardshell():
...: while True:
...: try:
...: command = input()
...: if command == 'shellbreak':
...: return
...: exec(command)
...: except Exception as e:
...: print(e)
...: except:
...: print("\nnope")
...:
In [8]: hardshell()
print(4)
4
print(help)
Type help() for interactive help, or help(object) for help about object.
33
exit
exit()
open("temp.py","w+")
f = open("temp.py","w+")
print(f)
<_io.TextIOWrapper name='temp.py' mode='w+' encoding='UTF-8'>
f.write_line("import math")
'_io.TextIOWrapper' object has no attribute 'write_line'
f.write("import math")
f.read()
print(f.read())
f.close()
f = open("temp.py","r")
print(f.read())
import math
shellbreak
(base) ➜ v.2 ipython
所以我想知道打开和关闭文件“temp.py”的哪一部分可能与ipython在这里崩溃有关,特别是如果可以在没有退出短语“shellbreak”的情况下退出循环