我试图从解释器内使用Python命令执行一个文件。
编辑:我试图使用变量和设置从该文件,而不是调用一个单独的进程。
我试图从解释器内使用Python命令执行一个文件。
编辑:我试图使用变量和设置从该文件,而不是调用一个单独的进程。
当前回答
我试图使用该文件中的变量和设置,而不是调用一个单独的进程。
好吧,简单地导入带有import filename的文件(减去.py,需要在相同的目录中或在你的PYTHONPATH上)将运行该文件,使其变量、函数、类等在文件名中可用。变量名称空间。
如果你有cheddar。py,变量spam和函数eggs,你可以用import cheddar导入它们,用cheddar访问变量。并通过调用cheddar.eggs()来运行该函数
如果你在cheddar.py中有在函数之外的代码,它将立即运行,但是构建在导入上运行的应用程序将使你的代码难以重用。如果可能的话,把所有东西都放在函数或类中。
其他回答
对于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后访问全局变量。
在我看来,最好的办法是:
import yourfile
修改完你的file.py
reload(yourfile)
或者在python3中:
import imp;
imp.reload(yourfile)
但这将使函数和类看起来像这样: yourfile。function1 yourfile.class1…
如果你不能接受这些, 最后的解决方案是:
reload(yourfile)
from yourfile import *
假设你想要以下特性:
源文件在调试器中正常运行(文件名显示在堆栈中,等等) __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 someFile.py 在IDLE中,按F5。 如果你是交互式输入,试试这个(Python3): > > > exec (open (filename.py) .read ()) 对于Python 2: >>>变量= {} execfile("someFile.py",变量) >>>打印someFile模块中的变量# globals