我想要使用该文件中的变量和设置,而不是调用一个单独的进程。
有几种方法。
通过 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
exec(open("./path/to/script.py").read(), globals())
这将执行一个脚本,并将其所有全局变量放入解释器的全局作用域中(在大多数脚本环境中是正常行为)。
我很惊讶还没有看到这个。你可以使用-i
选项执行一个文件,然后在执行终止后保持解释器开放:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
我想要使用文件中的变量和设置,而不是调用单独的进程。
那么,只需使用import filename
(去掉.py,必须在相同的目录或您的PYTHONPATH
上)导入该文件,将使其变量、函数、类等在filename.variable
命名空间中可用。
因此,如果您有一个名为cheddar.py
的文件,其中包含变量spam和函数eggs - 您可以通过import cheddar
导入它们,通过cheddar.spam
访问变量,并通过调用cheddar.eggs()
运行函数。
如果cheddar.py
中的代码不在函数之内,则会立即运行它,但构建依赖导入运行的应用程序会使重复使用代码变得困难。如果可能的话,请将所有内容放在函数或类中。
from filename import *
代替,这样就不会使用全局命名空间,正如问题所要求的那样。 - Ricardo Magalhães Cruz在我看来,最好的方法是:
import yourfile
并且在修改yourfile.py之后
reload(yourfile)
或者在Python3中:
import imp;
imp.reload(yourfile)
但这会使函数和类看起来像这样:yourfile.function1,yourfile.class1......
如果您无法接受这些,最终的解决方案是:
reload(yourfile)
from yourfile import *
from importlib import reload
。看起来imp
已经合并到了importlib
中。 - Neo li只需要去做,
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())
我不是专家,但这是我注意到的:
如果您的代码文件名为mycode.py,而您只输入'import mycode',Python会执行它,但不会将所有变量都提供给解释器。我发现,如果您想要将所有变量提供给解释器,实际上应该输入'from mycode import *'。
对于Python3,请使用 xxxx = name
或 yourfile
中的任何一个。
exec(open('./xxxx.py').read())
execfile()
中像使用<
一样从文件提供stdin
给执行脚本?@s-lott - bhanupython
指向python3
。 - StockBPATH
中查找文件夹时找到的python
可执行文件。 - HelloGoodbyepython
命令,按下F5键没有任何效果。 - undefined