我试图删除 Lua 中的非空目录,但没有成功,
我尝试了以下内容:
os.remove(path_to_dir)
收到错误:Directory not empty 39
当39是path_to_dir
也尝试过:
require ('lfs')
lfs.rmdir(path_to_dir)
并收到错误:目录不为空'
值得一提的是,我chmod -R a+rX *
到path_to_dir
感谢您的帮助。
答案 0 :(得分:3)
您可以遵循@ EgorSkriptunoff的建议并使用特定于操作系统的命令来删除非空目录或使用lfs获取文件/子目录列表(例如,作为described in this SO answer)和使用os.remove
逐个删除它们。
答案 1 :(得分:1)
使用path库可以
function rmdir(p)
path.each(path.join(p,"*"), function(P)
path.remove(P)
end,{
param = "f"; -- request full path
delay = true; -- use snapshot of directory
recurse = true; -- include subdirs
reverse = true; -- subdirs at first
})
path.remove(p)
end
答案 2 :(得分:1)
根据您的操作系统,您可以这样做:
os.execute("rm --recursive " .. path_to_directory)
(这个例子是针对linux的)
答案 3 :(得分:0)
使用lua lfs,您可以实现递归函数来执行此操作。
local lfs = require('lfs')
local deletedir
deletedir = function(dir)
for file in lfs.dir(dir) do
local file_path = dir..'/'..file
if file ~= "." and file ~= ".." then
if lfs.attributes(file_path, 'mode') == 'file' then
os.remove(file_path)
print('remove file',file_path)
elseif lfs.attributes(file_path, 'mode') == 'directory' then
print('dir', file_path)
deletedir(file_path)
end
end
end
lfs.rmdir(dir)
print('remove dir',dir)
end
deletedir('tmp')