由于我不知道交互式python模式的真正含义,所以我的问题可能很愚蠢。但是我仍然想问。
我想要一个可以初始化对象然后运行交互式python模式的python脚本。
它的行为如下:
$ cat myscript.py
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-i", action='store_true')
args = parser.parse_args()
if args.i:
foo = 'bar'
run_interactive_mode()
$ ./myscript.py -i
>>> foo
'bar'
>>>
有解决方案吗?
答案 0 :(得分:1)
您真的很亲密,但是我认为您对此太想了。 Python已经有一个-i
标志。参见Python3 Docs。从文档中:
当脚本作为第一个参数传递时,在执行脚本或命令后进入交互模式
根据您的情况,摆脱argparse
并根据需要创建变量。脚本运行完毕后,交互式终端将打开,并允许您与在脚本执行期间创建的变量进行交互
例如:
#!/usr/bin/env python3
foo = "bar"
$ python -I myscript.py
>>> foo
'bar'
>>>
答案 1 :(得分:1)
是-使用code
模块:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-i", action='store_true')
args = parser.parse_args()
def fun():
print("fun")
if args.i:
foo = 'bar'
import code
code.interact(local={**globals(), **locals()})
并运行它:
λ python tmp.py -i
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> foo
'bar'
>>> fun()
fun