包含当前文件路径的Lua全局变量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包含当前文件路径的Lua全局变量?相关的知识,希望对你有一定的参考价值。
Lua中是否有一个全局变量包含当前正在解释的文件的路径?像Python的__file__
变量?
我在翻译中跑了一个快速的for k, v in pairs(_G) do print(k) end
,看看能不能找到任何东西。只列出了以下变量?
string xpcall package tostring print os unpack require getfenv setmetatable next assert tonumber io rawequal collectgarbage getmetatable module rawset math debug pcall table newproxy type coroutine _G select gcinfo pairs rawget loadstring ipairs _VERSION dofile setfenv load error loadfile
有关如何获取当前正在执行的文件的路径的任何建议?
调试库有一个可以调用的getinfo
方法,它可以返回函数的源文件等。
local info = debug.getinfo(1,'S');
print(info.source);
这将返回调用堆栈第一级函数的源文件名(将以@符号开头,表示它是文件名)。通过传递1
,您需要有关当前功能的信息。如果你传入0
它将返回=[C]
,因为它将返回有关getinfo
函数本身的信息。
有关更多详细信息,请查看Lua官方网站上的Programming in Lua
参考资料:http://www.lua.org/pil/23.1.html
在Lua 5.2中,当通过require
加载脚本时,它接收为require
提供的模块名称和require
用于打开脚本的文件名作为参数:
$ cat a.lua
require"b"
$ cat b.lua
print("in b",...)
$ lua a.lua
in b b ./b.lua
在Lua 5.1中,只传递模块名称,而不是文件名。
回应lhf的回答:
作为Lua的新手,我最初对...
的意思感到困惑。事实证明这是一个vararg,就像ANSI C:https://www.lua.org/manual/5.3/manual.html#3.4一样。根据我对lua 5.3的使用经验,使用
local packageName, packagePath = ...
给我一个包名,就像在require中使用的那样,以及包的绝对文件路径。
以上是关于包含当前文件路径的Lua全局变量?的主要内容,如果未能解决你的问题,请参考以下文章