【问题标题】:Making user input a command in IPython让用户在 IPython 中输入命令
【发布时间】:2013-02-19 20:25:01
【问题描述】:

我对 python 还很陌生,这个问题可能是针对具体情况的。我正在使用 IPython 创建物理模拟图。

我遇到的问题是,当我尝试创建一个程序来避免一遍又一遍地重新键入相同的代码时。我试图让用户输入在 IPython 中执行命令,而不必自己输入所有内容。

例如,我正在使用一个名为 pynbody 的程序。我想做的是获取它,所以当我使用 ipython 打开我的测试程序时,它会提示用户输入用户想要导入的内容.但是,我只能将它作为一个字符串输入,它不会执行。

获取用户输入所涉及的语法是什么,即 input= raw_input("你要导入什么?")

就像你在 IPython 中输入的命令一样执行,即 导入pynbody

如果你创建一个程序,即test.py,它就可以正常工作,并且在其中你有import pynbody。有什么想法可以让这个从用户输入中发挥作用?

【问题讨论】:

    标签: string input command ipython


    【解决方案1】:

    不确定我是否完全理解您要做什么,但您可以尝试

    imported_module = __import__(<string>) 或者 eval('python expression')http://docs.python.org/2/library/functions.html#eval

    如需更复杂,请查看“ast”模块 (http://docs.python.org/2/library/ast.html)

    但对于初学者,我会避免走这条提示用户导入包或使用 raw_input 手动输入表达式的道路。

    【讨论】:

    • 我以导入为例,因为实际运行的内容要复杂得多,没有上下文就没有意义。虽然这是相同的前提,但 eval('python expression') 工作得很好。谢谢!