如何在 Lua 中获取目录路径,给定一个文件名,这是跨平台的

如果文件是 /etc/haproxy/haproxy.cfg,那么输出应该是目录名 /etc/haproxy

目前我正在使用

file = "/etc/haproxy/haproxy.cfg"
sep = "/"
file:match("(.*"..sep..")")

但它不是跨平台的,在 Windows 上会失败,因为路径分隔符不同。所以有没有一种跨平台的方法来实现这个,使用lfs模块?

点赞
用户1442917
用户1442917

我不确定您是要以跨平台的方式 解析 路径还是 使用 路径,但如果要解析路径,您可以使用 [\\/] 模式而不是 /,它将匹配不同类型的路径分隔符:

print(file:match("(.*[\\/])"))

如果您想要使用这些路径打开/访问文件,则在 Windows 上使用 / 作为路径分隔符将与 Lua API 兼容。

2016-06-21 16:25:11
用户107090
用户107090

package.config:sub(1,1) 会给你 Lua 运行平台的路径分隔符。请参阅手册

2016-06-21 20:22:37