繁体   English   中英

从python脚本运行交互模式

[英]Run the interactive mode from a python script

由于我不知道交互式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'
>>>

有解决方案吗?

您真的很亲密,但我认为您对此考虑过多。 Python已经有一个-i标志。 参见Python3文档 从文档:

当脚本作为第一个参数传递时,在执行脚本或命令后进入交互模式

在您的情况下,请摆脱argparse并根据需要创建变量。 脚本运行完成后,交互式终端将打开,并允许您与在脚本执行期间创建的变量进行交互

例如:

#!/usr/bin/env python3
foo = "bar"

$ python -I myscript.py
>>> foo
'bar'
>>>

是的-使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM