我试图从解释器内使用Python命令执行一个文件。
编辑:我试图使用变量和设置从该文件,而不是调用一个单独的进程。
我试图从解释器内使用Python命令执行一个文件。
编辑:我试图使用变量和设置从该文件,而不是调用一个单独的进程。
当前回答
Python 2 + Python 3
exec(open("./path/to/script.py").read(), globals())
这将执行一个脚本,并将其所有的全局变量放在解释器的全局作用域中(大多数脚本环境中的正常行为)。
Python 3 exec文档
其他回答
假设你想要以下特性:
源文件在调试器中正常运行(文件名显示在堆栈中,等等) __name__ == '__main__'为True,因此脚本的行为与脚本相同。
exec(open('foo.py').read())特性1失败 导入foo策略失败特性2
要做到这两点,你需要:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)
就做,
from my_file import *
确保不要添加.py扩展名。如果子目录中使用。py文件,
from my_dir.my_file import *
对于Python 3:
>>> exec(open("helloworld.py").read())
在运行该命令之前,请确保您在正确的目录中。
要从不同的目录运行一个文件,你可以使用下面的命令:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
在我看来,最好的办法是:
import yourfile
修改完你的file.py
reload(yourfile)
或者在python3中:
import imp;
imp.reload(yourfile)
但这将使函数和类看起来像这样: yourfile。function1 yourfile.class1…
如果你不能接受这些, 最后的解决方案是:
reload(yourfile)
from yourfile import *
没想到我还没见过。你可以执行一个文件,然后在执行结束后使用-i选项保持解释器打开:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18