通过代码执行python文件

时间:2014-01-01 22:07:58

标签: python pygame exec directory

我有一个非常简单但又很难的问题:我没有通过python执行python脚本。

这个想法非常简单,我想构建一种类似于相互关联的“脚本”。它就像HTML中的链接一样,我有一个不同屏幕的游戏(如主游戏,设置等),当用户点击“链接”(例如Play游戏)时,它会执行maingame.py主游戏子文件夹中的脚本。

现在出现了问题:我尝试使用exec(open('somescript.py').read())打开其他脚本。但是,“python工作文件夹”不会更改(它不会更改为子文件夹),并且这些脚本中的导入因此而无效。

有人可以提出替代方案吗?

2 个答案:

答案 0 :(得分:5)

os.chdir(os.path.dirname(script_name_to_run))? ...为什么不只是让文件遵循某种框架,它们都有run方法或者脚本的东西?然后就像正常一样进口它?这在实践中可能要好得多......

file1.py

from file2 import run as run1
from file3 import run as run2
import random
[run1,run2][random.randint(0,1)]() # run one of them

file2.py

def run():
    #do whatever

file3.py

def run():
    #do something else

答案 1 :(得分:2)

您可以使用以下几个选项:

  1. 使用似乎非常受欢迎的subprocess.Popen

    subprocess.Popen("python <path to .py file>")
    
  2. 使用os.system这是上面稍微过时的版本,不太可取,因为你对它的控制较少

    os.system("python <path to .py file>")
    
  3. 我倾向于将其他函数,变量等等直接导入到其他脚本中。在run.py文件中导入另外两个:

    from run1 import *
    from run2 import *
    
  4. 此选项可让您从run1run2run.py访问任何功能,类或变量。

    祝你好运!