如何在python解释器中执行文件?

我正尝试从解释器中使用python命令执行文件。

编辑:我试图从该文件使用variables和设置,而不是调用一个单独的进程。

几种方法。

从壳

python someFile.py 

从IDLE里面,按F5

如果您是交互式input,请尝试此操作。

 >>> variables= {} >>> execfile( "someFile.py", variables ) >>> print variables # globals from the someFile module 
 >>> execfile('filename.py') 

请参阅文档 。 如果您使用Python 3.0,请参阅此问题 。

查看@ S.Lott的答案,了解如何在执行后从filename.py访问全局variables。

Python 2 + Python 3

 exec(open("./path/to/script.py").read(), globals()) 

这将执行一个脚本,并将其所有全局variables放在解释器的全局范围内(大多数脚本环境中的正常行为)。

Python 3 exec文档

我试图从该文件使用variables和设置,而不是调用一个单独的进程。

那么,简单地使用import filename (减.py,需要在同一个目录或您的PYTHONPATHimport filename将运行该文件,使其variables,函数,类等在filename.variable命名空间中可用。

所以,如果你有cheddar.py与variables垃圾邮件和函数卵 – 你可以导入他们与import cheddar cheddar.spam ,访问variables与cheddar.spam和运行该函数调用cheddar.eggs()

如果cheddar.py中的代码位于函数之外,它将立即运行,但构build在导入时运行的应用程序会使代码难以重用。 如果一切皆有可能,把所有内容放在函数或类中。

惊讶,我还没有看到这一点。 您可以执行一个文件,然后在执行终止后使用-i选项将解释器打开:

 | foo.py | ---------- testvar = 10 def bar(bing): return bing*3 -------- $ python -i foo.py >>> testvar 10 >>> bar(6) 18 

我不是专家,但这是我注意到的:

如果你的代码是mycode.py,并且只input'import mycode',Python将执行它,但是它不会让你的所有variables都可用于解释器。 我发现,如果你想让所有的variables都可用于解释器,你应该实际input'from mycode import *'。

在我看来,最好的办法是:

 import yourfile 

并修改yourfile.py后

 reload(yourfile) 

要么

 import imp; imp.reload(yourfile) in python3 

但是这会使函数和类看起来像:yourfile.function1,yourfile.class1 …..

如果你不能接受,最终的解决办法是:

 reload(yourfile) from yourfile import * 

对于python3使用xxxx = name yourfile xxxx = name

 exec(open('./xxxx.py').read())