具有自动相对路径的execfile

2024-09-29 23:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够通过execfile()从工作目录外调用python脚本,而不必每次通过解释器指定相对文件路径。在

而不是:

execfile("..\\UserScripts\\HelloWorld.py")

我要打电话给:

^{pr2}$

有没有系统路径我可以再加上这个就可以了?目录是固定的,工作目录和文件的位置也是固定的。期望的是,用户可以将文件放入UserScripts目录,并期望能够通过解释器调用它,而不需要相关的文件路径。在


Tags: 文件用户py路径目录脚本系统解释器
2条回答

我强烈建议使用不同的名称(比如execscript),您可以将其添加到执行用户脚本的范围中:

scope.SetVariable("execscript", (CodeContext context, string filename) => {
    Builtins.execfile(context, Patch.Combine("../../Scripts", filename));
});

这将使它看起来像一个内置的字典,而不会弄乱内置字典。在

如果它必须是execfile,那么最好的办法是将execfile替换为修补目录,然后调用旧的execfile。以下是一些完全未经测试、未编译的代码,这些代码将为您指明正确的方向:

^{pr2}$

下面的脚本假设地狱世界.py与可执行文件位于同一目录中。在

import os.path
import sys

execfile(os.path.join( os.path.dirname(sys.argv[0]), 'HelloWorld.py'))

但是,如果在子目录中保存代码段(我们称之为“../UserSnippets”),则可以指定相对于包含execfile的脚本的路径:

^{pr2}$

使用os.path.join操作系统保持代码的可移植性(我希望,我只在我的Mac上测试过)。在

相关问题 更多 >

    热门问题