Lua从文件路径获取信息及通配符解释
来源:互联网 发布:命令行执行java文件 编辑:程序博客网 时间:2024/06/05 19:51
Lua文件从路径中中获取:
文件名(无后缀)、文件名(带后缀)、文件所在目录、文件去后缀路径、文件后缀
首先先来获得,Lua文件所在路径开始吧:
obj = io.popen("cd") --如果不在交互模式下,前面可以添加localpath = obj:read("*all"):sub(1,-2)--path存放当前路径(是为了去掉换行符)obj:close() --关掉句柄print(path)
原理: 利用Windows的 cd 命令返回工作目录
如果安装了LuaForWindows,会有个lfs.dll,你可以这样使用:
require("lfs")path = lfs.currentdir()print(path)
文件名(无后缀)、文件名(带后缀)、文件所在目录、文件去后缀路径、文件后缀
--获取路径function StripFileName(filename)if string.find(filename,":") thenreturn string.match(filename, "(.+)\\[^\\]*%.%w+") -- windowselsereturn string.match(filename, "(.+)/[^/]*%.%w+$") -- *nix systemendend--获取带后缀文件名function StripPath(filename)if string.find(filename,":") thenreturn string.match(filename, ".+\\([^\\]*%.%w+)") -- windowselsereturn string.match(filename, ".+/([^/]*%.%w+)$") -- *nix systemendend--获取去后缀文件名function StripPathEx(filename)if string.find(filename,":") thenreturn string.match(filename, ".+\\([^\\]*)%.%w+") -- windowselsereturn string.match(filename, ".+/([^/]*%.%w+)$") -- *nix systemendend--去除扩展名function StripExtension(filename)local idx = filename:match(".+()%.%w+$")if(idx) thenreturn filename:sub(1, idx-1)elsereturn filenameendend--获取扩展名function GetExtension(filename)return filename:match(".+%.(%w+)$")end
来个例子试试:
--paths = "/use/local/openresty/nginx/movies/fffff.tar.gz"paths = "C:\\Users\\zhuzhuxia\\Desktop\\luac\\zhuzhu.test"print (StripPath(paths))print (StripPathEx(paths))print (StripFileName(paths))print (StripExtension(paths))print (GetExtension(paths))可以改变paths 值看看啊,第一种情况是在linux系统下,第二种是在Windows系统下的。
这里稍微讲讲通配符吧:详情可以看看:http://blog.csdn.net/zhuzhuyule/article/details/41042369
例如:
--获取去后缀文件名function StripPathEx(filename)if string.find(filename,":") thenreturn string.match(filename, ".+\\([^\\]*)%.%w+") -- windowselsereturn string.match(filename, ".+/([^/]*%.%w+)$") -- *nix systemendend--return string.match(filename, ".+\\([^\\]*%.%w+)")
.+\\([^\\]*)%.%w+
我们先把所有通配符看看:
.(点): 与任何字符配对
%a: 与任何字母配对
%c: 与任何控制符配对(例如\n)
%d: 与任何数字配对
%l: 与任何小写字母配对
%p: 与任何标点(punctuation)配对
%s: 与空白字符配对
%u: 与任何大写字母配对
%w: 与任何字母/数字配对
%x: 与任何十六进制数配对
%z: 与任何代表0的字符配对
%x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符(^$()%.[]*+-?)的配对问题, 例如%%与%配对
[数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对
[^数个字符类]: 与任何不包含在[]中的字符类配对. 例如[^%s]与任何非空白字符配对
+ 匹配前一字符1次或多次,匹配一个或多个字符,总是进行最长的匹配。
* 匹配前一字符0次或多次,与 '+' 类似,但是他匹配一个字符0次或多次出现
- 匹配前一字符0次或多次,进行的是最短匹配
? 匹配前一字符0次或1次,匹配一个字符0次或1次
在来看.+\\([^\\]*)%.%w+:
.+ 多个任意字符
\\ 一个: \
([^\\]*) ()内的内容会返回,里边[^\\]*的意思:非'\'字符任意个('*'是任意个前一字符)
%. 一个小数点
%w+ 多个字母/数字
总结起来:...\(文件名,不含'\').文件后缀
eg:
string.match("C:\temp\我是文件.exp", ".+\\([^\\]*%.%w+)")
--> C:\temp\(我是文件).exp
--> 我是文件
其他几个的通配符,可以自己试着理解下啊!
- Lua从文件路径获取信息及通配符解释
- 获取EXE及Dll文件路径信息
- 从文件路径中获取文件名等信息
- 从文件路径中获取文件名等信息
- nginx 用lua中获取url路径相关信息
- 从文件路径中获取文件名等信息(转自白乔vcer)
- 获取文件路径及时间
- 从文件资源获取文件信息
- C#从字符串获取文件路径
- java从指定路径获取指定文件
- Java从文件路径中获取文件名
- VC从EXE文件弹窗中获取路径
- python创建桌面快捷方式(pythonwin)及从快捷方式获取文件路径
- php获取文件所在目录路径信息 计算程序路径
- 从资源文件中获取版本信息
- lua lfs库的使用,递归获取子文件路径
- JAVA WEB 获取properties文件,存放路径 及 获取路径
- js内如何导入jason文件及从做好的文件内获取输入框信息,以及离子特效文件
- Weblogic10 部署详细过程
- Mips GNU工具链简介
- Android内存泄漏产生原因
- 虚拟机上Redhat安装VMware Tools
- java实现文件实时监控:Jnotify和FileAlteration
- Lua从文件路径获取信息及通配符解释
- 如何从DLL文件导出对应的LIB文件
- MySQL cluster多个管理节点和多个sql节点的配置和相关命令
- 系统程序员成长计划-组合的威力
- 女性妇科疾病有哪些?
- SpringMVC与struts2比较
- 采用jQuery发起Ajax请求
- 中文 —— ListView
- WebDriver中调用JQuery(通过读取本地JQuery来实现)