Lua的路徑操作 shell cmd實現

2021-09-29 14:08:20 字數 2162 閱讀 9016

雖然lfs足夠強大,但部分情況還是不能很好的適應,以下方法基本上都是以shell cmd的形式去執行,從而實現路徑和檔案操作的各種需要。

其實lfs和這裡的方法結合起來,才是最後的 

filelib = 

local new_path=""

-- 分割路徑儲存到table

for s in string.gmatch(path,"([^'/']+)") do

if s~=nil then

table.insert(path_tb,s)

endend

-- 遍歷並拼接路徑檢測是否存在,不存在則新建

for k,v in ipairs(path_tb) do

if k==1 then

new_path=v

else

new_path=new_path.."/"..v

endif os.execute("cd "..new_path) then

else

os.execute("mkdir "..new_path)

endend

end;

--作用:清楚資料夾下所有檔案,連帶刪除資料夾

rmdeeppath=function(folderpath)

os.execute("rm -rf "..folderpath)

end;

--作用:刪除空資料夾/檔案

remove=function(folderpath)

os.remove(filelib.explainuser(folderpath))

end;

--作用:獲取某個資料夾下所有的檔案

getallfileinfolder=function(folderpath,backuppath)

local file_tb={}

local filelist={};

local newpath=""

local f=io.open(backuppath.."/file.txt",'a')

filelist=filelib.getfilelist(folderpath)

for i= 1, #filelist do

if string.find(filelist[i],"%.")==nil then

newpath=folderpath.."/"..filelist[i];

filelib.getallfileinfolder(newpath,backuppath)

else

f:write(folderpath.."/"..filelist[i].."\n")

endend

f:close();

end;

--作用:獲取資料夾下的一級檔案及資料夾table

lspath=function(path)

if filelib.ispathexist(path) then

local a = io.popen("ls "..path.."/");

local filetable = {};

if a==nil then

else

for eachfile in a:lines() do

table.insert(filetable,eachfile)

endend

return filetable

endreturn nil

end;

--作用:判斷檔案是否存在

ispathexist=function(path)

local f=io.open(filelib.explainuser(path),"r")

return f~=nil and f:close();

end;

--是否為資料夾

isfolderexist=function(path)

os.execute("cd "..path)

end}local ft = filelib.isfolderexist("~/tmp/a.py")

if ft == nil then

print("path do not exist")

else

for i, v in ipairs(ft) do

print(v)

endend

lua路徑問題

方法1 lua進行require絕對路徑時,會從package.path中進行遍歷 print package.path 會得到類似下面的結果 lualibs p4ulibs lua lualibs lua lualibs lua lualibs init.lua 故我們可以通過對package.p...

lua 指定require路徑

在自己的lua檔案中,如果使用到了自己寫的c庫或者第三方庫,想讓lua編譯到自己指定的目錄下尋找.lua或。so檔案的時候,可以再自己的lua 中新增如下 可以指定require搜尋的路徑。package.path usr local share lua 5.1 lua home resty lua...

Lua操作棧c呼叫lua

include stdafx.h int main 得到初始化棧大小 printf 初始化棧大小 d n lua gettop plua 開啟所有功能庫 lual openlibs plua 載入指令碼 lual dofile plua,test.lua 將指令碼中的add函式入棧 int ret ...