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