如何在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,需要在同一个目录或您的PYTHONPATH
) import 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())