我试图从解释器内使用Python命令执行一个文件。
编辑:我试图使用变量和设置从该文件,而不是调用一个单独的进程。
对于Python 2:
>>> execfile('filename.py')
对于Python 3:
>>> exec(open("filename.py").read()) # or >>> from pathlib import Path >>> exec(Path("filename.py").read_text())
看到的文档。如果你使用的是Python 3.0,请参见这个问题。
参见@S的回答。Lott提供了一个示例,说明如何在执行完filename.py后访问全局变量。
几种方式。
来自shell
python someFile.py
从IDLE内部,点击F5。
>>> exec(open("filename.py").read())
>>> variables= {} >>> execfile( "someFile.py", variables ) >>> print variables # globals from the someFile module
我试图使用该文件中的变量和设置,而不是调用一个单独的进程。
好吧,简单地导入带有import filename的文件(减去。py,需要在同一个目录或在你的PYTHONPATH上)将运行该文件,使其变量、函数、类等在filename.variable命名空间中可用。
import filename
PYTHONPATH
filename.variable
因此,如果你有带有变量spam和函数eggs的cheddar.py,你可以用import cheddar导入它们,用cheddar.spam访问变量,并通过调用cheddar.eggs()运行函数
cheddar.py
import cheddar
cheddar.spam
cheddar.eggs()
如果你在cheddar.py中有在函数之外的代码,它将立即运行,但是构建在导入上运行东西的应用程序将使你的代码很难重用。如果可能的话,把所有东西都放在函数或类中。
我不是专家,但这是我注意到的:
例如,如果你的代码是mycode.py,你只输入'import mycode', Python会执行它,但不会让解释器使用你的所有变量。我发现你应该输入'from mycode import *'如果你想让所有变量对解释器可用。
exec(open("./path/to/script.py").read(), globals())
这将执行一个脚本,并将其所有的全局变量放在解释器的全局作用域中(大多数脚本环境中的正常行为)。
Python 3 exec文档 . cn
exec
对于python3,使用xxxx = name或yourfile。
xxxx = name
yourfile
exec(open('./xxxx.py').read())
没想到我还没见过。你可以执行一个文件,然后使用-i选项在执行结束后保持解释器打开:
-i
| foo.py | ---------- testvar = 10 def bar(bing): return bing*3 -------- $ python -i foo.py >>> testvar 10 >>> bar(6) 18
在我看来,最好的办法是:
import yourfile
修改完你的file.py
reload(yourfile)
或者在python3中:
import imp; imp.reload(yourfile)
但这将使函数和类看起来像这样: yourfile。function1 yourfile.class1…< / p >
如果你不能接受 最后的解决方案是:
reload(yourfile) from yourfile import *
就做,
from my_file import *
确保不要添加.py扩展名。如果子目录中使用。py文件,
from my_dir.my_file import *
>>> exec(open("helloworld.py").read())
在运行该命令之前,请确保您在正确的目录中。
要从不同的目录运行一个文件,你可以使用下面的命令:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file: exec(file.read())
假设你想要以下特性:
__name__ == '__main__'
exec(open('foo.py').read())失败特性1 import foo策略失败特性2
exec(open('foo.py').read())
import foo
要做到这两点,你需要:
source = open(filename).read() code = compile(source, filename, 'exec') exec(code)
python -c "exec(open('main.py').read())"