首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取lua脚本文件的绝对路径

获取Lua脚本文件的绝对路径可以通过以下步骤实现:

  1. 使用Lua的debug库中的getinfo函数获取当前执行的Lua脚本的信息。该函数返回一个包含脚本信息的table。
  2. 从getinfo返回的table中获取脚本所在的目录路径。
  3. 将脚本文件名与目录路径拼接起来,得到脚本文件的绝对路径。

以下是一个示例代码:

代码语言:lua
复制
function getScriptPath()
    local info = debug.getinfo(2, "S")
    local scriptPath = info.source:sub(2)  -- 去除开头的@
    scriptPath = scriptPath:gsub("\\", "/")  -- 将反斜杠替换为正斜杠
    scriptPath = scriptPath:match("(.*/)")  -- 获取目录路径
    return scriptPath
end

local absolutePath = getScriptPath() .. "your_script.lua"
print(absolutePath)

这段代码定义了一个名为getScriptPath的函数,该函数使用debug.getinfo获取当前执行的脚本信息。然后,通过处理字符串,得到脚本所在的目录路径。最后,将目录路径与脚本文件名拼接起来,得到脚本文件的绝对路径。

请注意,这段代码中的路径分隔符使用的是正斜杠(/),如果你的操作系统使用的是反斜杠(),请根据需要进行相应的修改。

推荐的腾讯云相关产品:无

希望这个答案对你有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何获取当前正在执行脚本绝对路径

dirname $0 最近在看脚本时候经常发现有“dirname $0”这样一种表述,很是不解。...如图所示,dirname $0是不能在命令行下单独执行。 举个例子,我用mkdir -p创建一系列文件夹 mkdir -p 1/2/3/4/5/6 然后写一个小脚本 test.sh #!.../bin/bash cd `dirname $0` echo `pwd` 切到/home/zwang/1/2/3/4路径下,运行test.sh后就位于脚本所在目录并输出路径了。...现在我们回头来把这个脚本拆开来理解一下 `` 表示执行引号内命令 $0 表示当前执行脚本文件名 dirname $0 表示获取当前执行脚本路径 这样一来就能明白dirname $0是如何获取当前执行脚本路径了吧.../bin/bash basepath=$(cd `dirname $0`; pwd) echo $basepath 此时输出结果是脚本所在路径,但如果我换一种命令替换方式 #!

1.8K20
  • 如何在 MSBuild 项目文件 csproj 中获取绝对路径

    通常我们能够在 csproj 文件中仅仅使用相对路径就完成大多数编译任务。但是有些外部命令执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同含义。...这个时候,就需要将相对路径在 csproj 中转换为绝对路径来使用。 本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 中,可以在 csproj 中编写调用 PowerShell 脚本代码,于是获取一个路径绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...WalterlvRelativePath))) 这样,就可以使用 $(_WalterlvAbsolutePath) 属性来获取绝对路径...你可以阅读我其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv 如何更精准地设置

    27630

    bash shell:获取当前脚本绝对路径(pwdreadlink)

    https://blog.csdn.net/10km/article/details/51906821 有时候,我们需要知道当前执行输出shell脚本所在绝对路径,可以用dirname...我们知道 dirname 可以获取一个文件所在路径,dirname用处是: 输出已经去除了尾部”/”字符部分名称;如果名称中不包含”/”, 则显示”.”(表示当前目录)。...所以下面这样代码中SHELL_FOLDER中不一定是绝对路径 SHELL_FOLDER=$(dirname "$0") 需要用cd和pwd命令配合获取脚本所在绝对路径,正确写法是这样, SHELL_FOLDER...=$(cd "$(dirname "$0")";pwd) 如果你觉得上面的写法比较麻烦,还有一个方式获取脚本绝对路径,就是借助readlink命令,下面是readlink命令行说明: ?...所以用readlink命令我们可以直接获取$0参数全路径文件名,然后再用dirname获取其所在绝对路径: SHELL_FOLDER=$(dirname $(readlink -f "$0")) 参考

    8.7K30

    vue下获取所选文件绝对路径

    一番码客 : 挖掘你关心亮点。...http://efonfighting.imwork.net 本文目录: 前言vue中实现代码实际效果一番今日 前言 我们在开发electron桌面应用时,因为常常希望对一些本地文件做一些操作,需要获取到这个文件绝对路径...今天一番在electron-vue下实现了单击按钮选择文件,并获取文件绝对路径然后显示出来效果。在本来要放弃时候突然柳暗花明。...这里关键点: document.getElementById('open').files[0].path,这里获取文件路径方法是获取文件类元素数组,然后通过path关键字获取文件绝对路径。...”,可以选中一个本地文件; 点击显示路径,可以将刚刚选择文件本地绝对路径显示在文本框内。

    25.8K11

    Redis Lua脚本使用

    脚本 Lua脚本功能为Redis开发和运维人员带来如下三个好处: Lua脚本在Redis中是原子执行,执行过程中间不会插入其他命令。...Lua脚本可以帮助开发和运维人员创造出自己定制命令,并可以将这些命令常驻在Redis内存中,实现复用效果。 Lua脚本可以将多条命令一次性打包,有效地减少网络开销。...启用Lua脚本非阻塞异步调试(更改将被丢弃)。 SYNC。启用阻止Lua脚本同步调试(保存对数据更改)。 NO。禁用脚本调试模式。...###沙箱(sandbox)和最大执行时间 脚本应该仅仅用于传递参数和对 Redis 数据进行处理,它不应该尝试去访问外部系统(比如文件系统),或者执行任何系统调用。...最大执行时间长短由 lua-time-limit 选项来控制(以毫秒为单位),可以通过编辑 redis.conf 文件或者使用 CONFIG GET 和 CONFIG SET 命令来修改它。

    1.6K10

    VBA: 获取单元格内超链接文件绝对路径

    有时为了VBA代码编写方便,需要使用是链接文件绝对路径。下面通过编写VBA函数,获取单元格内超链接文件绝对路径。 1 绝对路径和相对路径 有两种方法指定一个文件路径。...绝对路径,总是从根文件夹开始。 相对路径,它相对于程序的当前工作目录。 对于点(.)和点点(..)文件夹,它们不是真正文件夹,而是可以在路径中使用特殊名称。...单个句点(“点”)用作文件夹目录名称时,是“这个目录”缩写。两个句点(“点点”)意思是父文件夹。 下图是一些文件文件例子。...回到VBA,通过ThisWorkbook.Path,可以获取当前工作簿所在工作目录路径;通过Hyperlinks(1).Address,得到是基于ThisWorkbook.Path相对路径;通过ThisWorkbook.Path...拼接相对路径,可以得到目标文件绝对路径

    3.4K40

    SpringBoot获取项目文件绝对路径和相对路径

    @toc1.场景比如上传图片或者读取项目里excel文件内容等,都需要准确获取文件路径2.说明项目代码大致样式获取路径说明所谓获取相对路径,其实是获取项目打包后target目录路径,而不是咱们平常看到代码路径...,具体可查看下方图片3.举例说明网上常见几种方法路径获取结果request.getServletContext().getRealPath("")request.getServletContext()...,ResourceUtils引入是package org.springframework.util;详情说明:方法1、2request.getServletContext().getRealPath...("")和 request.getServletContext().getRealPath("/")获得路径不是项目路径,而是c盘下一个tomcat目录路径)undefined结果比如:C:\Users...OperateExcelController.class.getClassLoader().getResource("").getPath()和ResourceUtils.getURL("classpath:").getPath()实际获取都是编译包里根据经

    3700

    lua执行redis脚本找不到脚本问题

    一向对性能追求极致我怎么能随便写几条redis统计语句就应付呢。于是我打算使用lua脚本把用到几条redis指令封装一起,这样减少和redisIO交互,还可以保证操作原子性。...我为自己聪明才智沾沾自喜。 脚本如下(下面并不是我项目中实际脚本,做了一些修改,大家不用纠结语法和能否运行。...读时候也是一样原理。 lua脚本有一种缓存机制。...在redis集群中,为了避免重复发送脚本数据浪费网络资源,可以使用script load命令进行脚本数据缓存,并且返回一个哈希码作为脚本调用句柄,每次调用脚本只需要发送哈希码来调用即可。...= null就会去调用redisevalhash执行脚本,但是因为key不是固定(实际项目中这个key是用户id),所以有可能对应节点上是没有脚本缓存

    2.9K20

    wrk(2)- Lua 脚本使用

    背景 要用 wrk 进行压测 看了下其他同事压测,都用了 Lua 脚本来自定义一些东西 所以这一篇主要讲 Lua 脚本 Lua 介绍 Lua 脚本是一种轻量小巧脚本语言,用标准 c 语言编写,并以源代码形式开放...wrk 工具嵌入了 Lua 脚本语言 因此,在自定义压测场景时,可在 wrk 目录下使用 Lua 定制压测场景 Lua 脚本三个阶段 wrk 支持在三个不同阶段执行 LuaJIT 脚本 setup:...1.1 GET 请求 这里如果想发起 POST 请求的话,Lua 脚本要怎么写 官方脚本 -- POST 请求,演示如何添加 -- HTTP method, body, header wrk.method...,可以修改或设置 thread 相关参数,也可以终止线程执行 这里一般做一些初始化工作,例如读取配置文件,加载到内存(不要每次请求时候读取一遍,这样对测试准确性影响很大) thread 一些方法和变量...创建了 5 个线程, 以及每个线程发起请求数和得到响应数都有打印出来 工作上模板栗子 Lua 脚本 为防止被盗,只放图片 ? ?

    2.6K20

    Lua文件操作

    FileRename方法就可以实现文件重命名,但是线上版本没有导出相应方法,导致目前只能通过LuaIO来实现。...最近再看lua源码时,才真正意识到luaconf.h中定义 LUAI_MAXCSTACK 是 cclosureupvalue上限,而lua内存上限似乎没有找到明确代码。...底层通过调用fread方法来获得文件内容,默认每次最多读取512(LUAL_BUFFERSIZE值) 然后调用file:seek(“end”)来获取文件大小 ?...,转换为16进制,然后对比JPEG头部,判断是否为JPEG格式文件,这个是我想起自己之前写过一篇文章《node.js获取图片文件真实类型》 文件一些方法和代码,比如为何是r + b,以及2^13...(8KB内存)这种技巧,都是参考《Lua程序设计 第二版》第21章  I/O库,网上应该有中文版PDF下载,自行搜索吧… 本文参考: lua cclosure upvalue 数量限制 Lua编码那些陷阱

    1.9K10

    Redis中事务与Lua脚本

    脚本 ·Lua脚本在Redis中是原子执行,执行过程中间不会插入其他命令 ·Lua脚本可以帮助开发和运维人员创造出自己定制命令,并可以将这些命令常驻在Redis内存中,实现复用效果 ·Lua脚本可以将多条命令一次性打包...,有效地减少网络开销 Lua脚本怎么写 创建lua脚本 就像创建其他文件一样,新建一个以.lua为后缀文件,比如说test.lua –-注释 打印语句 print("Hello World!"...Redis如何执行Lua脚本: redis-cli --eval redis-ratelimiter-counter.lua key limit , value1 value2 上方这段命令意思呢,其实就是告诉...redis:请你启动客户端时候帮我执行一下redis-ratelimiter-counter.lua这个文件,然后呢,执行文件的话有这么几个参数,key、limit 、 value1、value2...")));//加载lua脚本文件 List keyList = new ArrayList(); keyList.add(key);//通过KEYS[1]取值

    2.3K50

    Redis整合lua脚本实例分析

    文章目录 1、以计数模式实现限流效果 2、用lua脚本防止超卖   基于Redislua脚本能确保Redis命令顺序性和原子性,所以在高并发场景下会用两者整合方法实现限流和防超卖等效果,...在第3行里,通过redis.call方法调用get命令去获取待限流对象当前访问次数,并赋给curVisitNum变量,如果获取不到,表示当前对象还没有访问,就把curVisitNum变量设置为0.   ...lua脚本天然具有原子性,而且执行lua脚本Redis服务器是以单线程模式处理命令,所以用lua脚本能有效地防止超卖。在如下lua脚本里实现了防超卖效果。...该lua脚本只有一个KEYS[1]参数,用来传入表示商品键。...用Java代码调用lua脚本演示防止超卖效果。

    63410
    领券