如何在 Python 解释器中执行文件?
- 2025-02-12 10:04:00
- admin 原创
- 51
问题描述:
我正在尝试从解释器内部使用 Python 命令执行文件。
我正在尝试使用该文件中的变量和设置,而不是调用单独的进程。
解决方案 1:
有几种方法。
从 shell
python someFile.py
在 IDLE 内部,按F5。
如果你正在交互输入,请尝试这个(Python3):
>>> exec(open("filename.py").read())
对于 Python 2:
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
解决方案 2:
对于 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 后访问全局变量的示例。
解决方案 3:
Python 2 + Python 3
exec(open("./path/to/script.py").read(), globals())
这将执行一个脚本并将其所有全局变量放入解释器的全局范围内(大多数脚本环境中的正常行为)。
Python 3exec
文档
解决方案 4:
很惊讶我还没有见过这个。你可以执行一个文件,然后在执行终止后使用以下-i
选项保持解释器打开:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
解决方案 5:
我正在尝试使用该文件中的变量和设置,而不是调用单独的进程。
好吧,只需用import filename
(减去.py,需要在同一目录中或在你的PYTHONPATH
)导入文件就会运行该文件,使其变量,函数,类等在filename.variable
命名空间中可用。
因此,如果您有cheddar.py
变量 spam 和函数 eggs – 您可以用它们导入它们import cheddar
,用访问变量cheddar.spam
并通过调用来运行该函数cheddar.eggs()
如果您的代码cheddar.py
位于函数之外,它将立即运行,但构建在导入时运行内容的应用程序将很难重用您的代码。如果可能的话,请将所有内容放在函数或类中。
解决方案 6:
我认为,最好的方法是:
import yourfile
修改 yourfile.py 后
reload(yourfile)
或者在python3中:
import imp;
imp.reload(yourfile)
但这会使函数和类看起来像这样:yourfile.function1,yourfile.class1.....
如果你不能接受这些,那么最终的解决方案是:
reload(yourfile)
from yourfile import *
解决方案 7:
就这么做吧,
from my_file import *
确保不要添加 .py 扩展名。如果您的 .py 文件在子目录中使用,
from my_dir.my_file import *
解决方案 8:
对于 Python 3:
>>> exec(open("helloworld.py").read())
运行该命令之前,请确保您位于正确的目录中。
要从不同的目录运行文件,可以使用以下命令:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
解决方案 9:
我不是专家,但这是我注意到的:
例如,如果您的代码是 mycode.py,并且您只输入“import mycode”,Python 将执行它,但它不会让所有变量都可供解释器使用。我发现,如果您想让所有变量都可供解释器使用,您实际上应该输入“from mycode import *”。
解决方案 10:
对于 python3,可以使用xxxx = name
或yourfile
。
exec(open('./xxxx.py').read())
解决方案 11:
假设您需要以下功能:
源文件在调试器中正常运行(文件名显示在堆栈中等)
__name__ == '__main__'
为 True,因此脚本可以正确地作为脚本运行。
失败特征exec(open('foo.py').read())
1import foo
策略失败特征 2
为了获得这两者,你需要:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)
解决方案 12:
python -c "exec(open('main.py').read())"