在交互式Python提示符中运行Python脚本并保留变量?

10

我从如何运行Python程序?中了解到,在命令提示符下,我可以使用以下命令:

C:\python>python first.py

要运行 first.py,但是,在我进入Python交互式提示符后,是否有可能通过运行

C:\python>python 

当你看到Python提示符>>>时,运行first.py。在运行first.py完成后,回到交互式Python提示符,我可以看到first.py中定义的变量吗?

例如,如果first.py内部创建了一些变量,比如通过

(x,y) = [3,5]

在运行完first.py后回到交互式Python提示符,xy是否仍然存在?

使用Python运行Windows shell命令介绍了如何在Python中运行Windows shell命令,因此在交互式Python提示符中,我实际上可以使用

>>>os.system('python first.py')

要运行first.py,但是在运行后定义在其中的xy会丢失。

1
尝试从提示中输入 import first - Azat Ibrakov
2
如果你没有把代码放入 if __name__ == "__main__": 中,那么你可以直接使用 import first - tobias_k
@AzatIbrakov 那么在运行后,是否有可能在 first.py 中保留变量呢? - athos
@tobias_k 同样的问题... - athos
2
@athos:你可以使用点符号从模块中获取对象。 - Azat Ibrakov
@AzatIbrakov 谢谢! - athos
2个回答

18

尝试以下方法适用于 Python 2.x:

>>> execfile('first.py')

对于Python 3.x,请尝试以下操作:

>>> exec(open("./first.py").read())

接下来,这些变量应该对您可用。


不知何故,它返回错误:Traceback(最近的调用最先): File“<stdin>”,第1行,在<module>中 NameError:名称'execfile'未定义 - athos
@athos 你可能正在使用Python 3,请检查更新后的答案。 - Sawant
谢谢,它正在工作! - athos
Python 3.x 版本对我来说可行。 - Reversed Engineer

16

使用

C:\python>python -i first.py

运行脚本并在同一命名空间中获取交互式 shell。


这样脚本的执行方式与OP目前所做的方式相同,只是增加了交互式shell。import确实无法与if __name__ == "__main__":语句一起使用。 - Christian König

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接