如果文件是/etc/haproxy/haproxy.cfg
,输出应该是目录名称/etc/haproxy
。我如何得到目录路径,给定一个文件名称在Lua中,这是一个独立平台
目前我使用
file = "/etc/haproxy/haproxy.cfg"
sep = "/"
file:match("(.*"..sep..")")
但它不是独立的平台会失败在Windows上,由于路径分隔符是不同的。那么有没有一个平台不可知的方式来实现这一点,使用lfs模块?
如果文件是/etc/haproxy/haproxy.cfg
,输出应该是目录名称/etc/haproxy
。我如何得到目录路径,给定一个文件名称在Lua中,这是一个独立平台
目前我使用
file = "/etc/haproxy/haproxy.cfg"
sep = "/"
file:match("(.*"..sep..")")
但它不是独立的平台会失败在Windows上,由于路径分隔符是不同的。那么有没有一个平台不可知的方式来实现这一点,使用lfs模块?
package.config:sub(1,1)
为您提供了运行Lua的平台的路径分隔符。请参阅manual。
我不能完全肯定,如果你想解析路径或使用在一个独立于平台的方式,路径,而是要分析你可以用它代替/
[\\/]
模式,这将匹配不同类型的路径分隔符:
print(file:match("(.*[\\/])"))
如果你想使用这些路径,然后使用/
作为路径分隔符将在Windows的Lua API合作,以打开/访问文件。
对于Linux,反斜杠不应位于模式内:'local pattern_for_separator =“[/”.. package.config:sub(1,1)..“]”' –
这两个分隔符在Windows上均有效。例如:'file = io.open'C:/ Python27/README.txt''和'os.execute'“”C:/ Program Files/Internet Explorer/iexplore.exe“”。但'package.config:sub(1,1)'只给出反斜杠。 –