2024-09-29 23:18:32 发布
网友
我需要能够通过execfile()从工作目录外调用python脚本,而不必每次通过解释器指定相对文件路径。在
而不是:
execfile("..\\UserScripts\\HelloWorld.py")
我要打电话给:
有没有系统路径我可以再加上这个就可以了?目录是固定的,工作目录和文件的位置也是固定的。期望的是,用户可以将文件放入UserScripts目录,并期望能够通过解释器调用它,而不需要相关的文件路径。在
我强烈建议使用不同的名称(比如execscript),您可以将其添加到执行用户脚本的范围中:
execscript
scope.SetVariable("execscript", (CodeContext context, string filename) => { Builtins.execfile(context, Patch.Combine("../../Scripts", filename)); });
这将使它看起来像一个内置的字典,而不会弄乱内置字典。在
如果它必须是execfile,那么最好的办法是将execfile替换为修补目录,然后调用旧的execfile。以下是一些完全未经测试、未编译的代码,这些代码将为您指明正确的方向:
execfile
下面的脚本假设地狱世界.py与可执行文件位于同一目录中。在
import os.path import sys execfile(os.path.join( os.path.dirname(sys.argv[0]), 'HelloWorld.py'))
但是,如果在子目录中保存代码段(我们称之为“../UserSnippets”),则可以指定相对于包含execfile的脚本的路径:
使用os.path.join操作系统保持代码的可移植性(我希望,我只在我的Mac上测试过)。在
我强烈建议使用不同的名称(比如
execscript
),您可以将其添加到执行用户脚本的范围中:这将使它看起来像一个内置的字典,而不会弄乱内置字典。在
如果它必须是
^{pr2}$execfile
,那么最好的办法是将execfile
替换为修补目录,然后调用旧的execfile
。以下是一些完全未经测试、未编译的代码,这些代码将为您指明正确的方向:下面的脚本假设地狱世界.py与可执行文件位于同一目录中。在
但是,如果在子目录中保存代码段(我们称之为“../UserSnippets”),则可以指定相对于包含execfile的脚本的路径:
^{pr2}$使用os.path.join操作系统保持代码的可移植性(我希望,我只在我的Mac上测试过)。在
相关问题 更多 >
编程相关推荐