我有一个非常简单但又很难的问题:我没有通过python执行python脚本。
这个想法非常简单,我想构建一种类似于相互关联的“脚本”。它就像HTML中的链接一样,我有一个不同屏幕的游戏(如主游戏,设置等),当用户点击“链接”(例如Play游戏)时,它会执行maingame.py主游戏子文件夹中的脚本。
现在出现了问题:我尝试使用exec(open('somescript.py').read())
打开其他脚本。但是,“python工作文件夹”不会更改(它不会更改为子文件夹),并且这些脚本中的导入因此而无效。
有人可以提出替代方案吗?
答案 0 :(得分:5)
os.chdir(os.path.dirname(script_name_to_run))
? ...为什么不只是让文件遵循某种框架,它们都有run
方法或者脚本的东西?然后就像正常一样进口它?这在实践中可能要好得多......
from file2 import run as run1
from file3 import run as run2
import random
[run1,run2][random.randint(0,1)]() # run one of them
def run():
#do whatever
def run():
#do something else
答案 1 :(得分:2)
您可以使用以下几个选项:
使用似乎非常受欢迎的subprocess.Popen
subprocess.Popen("python <path to .py file>")
使用os.system
这是上面稍微过时的版本,不太可取,因为你对它的控制较少
os.system("python <path to .py file>")
我倾向于将其他函数,变量等等直接导入到其他脚本中。在run.py
文件中导入另外两个:
from run1 import *
from run2 import *
此选项可让您从run1
内run2
或run.py
访问任何功能,类或变量。
祝你好运!