lua檔案從路徑中中獲取:
檔名(無字尾)、檔名(帶字尾)、檔案所在目錄、檔案去字尾路徑、檔案字尾
首先先來獲得,lua檔案所在路徑開始吧:
obj = io.popen("cd") --如果不在互動模式下,前面可以新增local
path = 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,":") then
return string.match(filename, "(.+)\\[^\\]*%.%w+") -- windows
else
return string.match(filename, "(.+)/[^/]*%.%w+$") -- *nix system
endend--獲取帶字尾檔名
function strippath(filename)
if string.find(filename,":") then
return string.match(filename, ".+\\([^\\]*%.%w+)") -- windows
else
return string.match(filename, ".+/([^/]*%.%w+)$") -- *nix system
endend--獲取去字尾檔名
function strippathex(filename)
if string.find(filename,":") then
return string.match(filename, ".+\\([^\\]*)%.%w+") -- windows
else
return string.match(filename, ".+/([^/]*%.%w+)$") -- *nix system
endend--去除副檔名
function stripextension(filename)
local idx = filename:match(".+()%.%w+$")
if(idx) then
return filename:sub(1, idx-1)
else
return filename
endend--獲取副檔名
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系統下的。
這裡稍微講講萬用字元吧:詳情可以看看:
例如:
--獲取去字尾檔名
function strippathex(filename)
if string.find(filename,":") then
return string.match(filename, ".+\\([^\\]*)%.%w+") -- windows
else
return string.match(filename, ".+/([^/]*%.%w+)$") -- *nix system
endend--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
--> 我是檔案
其他幾個的萬用字元,可以自己試著理解下啊!
定時從linux獲取資訊放到windows上
環境 windows上 路徑下存放 winscp 5.13.8 setup.exe 第一步 test.txt 拉取指令碼的txt文字 解析 存放從linux路徑下拉取所需原始檔zyy count.result 到本地windows的目標路勁改下 d zyy xnresult option echo ...
記錄安卓手機 劉海屏判斷及獲取資訊
object notchsupportutil catch e classnotfoundexception catch e nosuchmethodexception catch e exception finally 獲取劉海尺寸 width height int 0 值為劉海寬度 int 1 ...
從Request物件中獲取各種路徑資訊
從request物件中可以獲取各種路徑資訊,以下例子 假設請求的頁面是index.jsp,專案是webdemo,則在index.jsp中獲取有關request物件的各種路徑資訊如下 string path request.getcontextpath string basepath request....