Lua中如何获取目录列表

2024-04-20

我需要 LUA 中的目录列表

假设我的目录路径为“C:\Program Files”

我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹。

Example

需要路径“C:\Program Files”中所有文件夹的列表

以下是上述路径中的文件夹名称

  1. test123

  2. test4567

  3. 文件夹 123

  4. 文件夹 456

  5. 文件夹 456 789

    需要在列表中获取上述内容,然后必须仅在文件夹 456 789 中搜索特定字符串,例如文件夹 456。

已尝试过以下代码。下面我缺少的东西:-

local function Loc_Lines( str )
--
local ret= {}   -- 0 lines

while str do
    local _,_,line,tail= string.find( str, "(.-)\n(.+)" )
    table.insert( ret, line or str )
    str= tail
  Print (str)
end

return ret
end


local function Loc_ShellCommand( cmd )
--
local str= nil

    --
    local f= io.popen( cmd )    -- no command still returns a handle :(
     if f then

        str= f:read'*a'
    Print(str)
        f:close()
    end
    
    if str=="" then   -- take no output as a failure (we can't tell..)
    Print("hi")
        str= nil
    end
 
-- Remove terminating linefeed, if any (eases up one-line analysis)
--
if str then
    if string.sub( str, -1 ) == '\n' then
        str= string.sub( str, 1, -2 )
    end
end

return str
 end


 local function Loc_DirCmd( cmd )

 Print(cmd)

  local str= Loc_ShellCommand( cmd )



 return Loc_Lines(str)
 end


local function Loc_DirList( dirname )

 local ret= {}
  
    local lookup= {}

   local tbl= Loc_DirCmd( "dir /AD /B "..dirname )   -- only dirs

    -- Add slash to every dir line
    --
    for i,v in ipairs(tbl) do
        table.insert( ret, v..'\\' )
        lookup[v]= true
    end       

    
    -- Return with forward slashes
    --
    if true then
        for i=1,table.getn(ret) do
            ret[i]= string.gsub( ret[i], '\\', '/' )
     Print (ret[i])
        end
    end
  

   return ret
 end


 Loc_DirList("C:\\Program Files\\")

我讨厌必须安装库(尤其是那些希望我使用安装程序包来安装它们的库)。如果您正在寻找一个干净的解决方案来在 Lua 中的绝对路径上列出目录,那么就不用再犹豫了。

基于 sylvanaar 提供的答案,我创建了一个函数,该函数返回给定目录的所有文件的数组(需要绝对路径)。这是我的首选实现,因为它适用于我的所有机器。

-- Lua implementation of PHP scandir function
function scandir(directory)
    local i, t, popen = 0, {}, io.popen
    local pfile = popen('ls -a "'..directory..'"')
    for filename in pfile:lines() do
        i = i + 1
        t[i] = filename
    end
    pfile:close()
    return t
end

如果您使用的是 Windows,则需要安装 bash 客户端,以便“ls”命令正常工作 - 或者,您可以使用 sylvanaar 提供的 dir 命令:

'dir "'..directory..'" /b /ad'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lua中如何获取目录列表 的相关文章

  • Windows CMD 中的创建日期

    使用 Windows 批处理 此函数返回文件的创建日期 creationDate set CompareFile 1 echo CompareFile for f skip 5 tokens 1 2 4 5 delims a in dir
  • 如何在 Lua 中下载文件,但在运行时写入本地文件

    我正在尝试制作一个更新程序 以便当我的 Lua 应用程序过时时它将使用LuaSocket下载较新的 exe 文件 可以运行我的 Lua 代码 在这个更新程序中 我希望它显示到目前为止已下载的数量 但是 通过以下 HTTP 请求 它会阻止应用
  • 如何加载目录中的所有文件?

    正如标题所说 如何加载目录中的每个文件 我对c 和lua都感兴趣 编辑 对于 Windows 我很高兴能得到一些真正的工作代码 尤其是 lua 我可以用 boost filesystem for c 来做 对于 Lua 你需要模块Lua文件
  • 访问 Lua 类型元表

    显然 getmetatable 可以访问几种类型的元表 getmetatable getmetatable getmetatable newproxy true 然而 似乎您无法获取其他类型的元表 除了函数 似乎无法访问数字 布尔值或 ni
  • Lua:“拖动”数组中的元素序列

    我正在尝试创建一个函数 将连续数量的元素 拖动 到数组中的新位置 并限制为数组的当前大小 其他项目应该围绕 拖动 的项目晃动 例如 如果我的数组有 7 个元素 并且我想拖动中间的三个 1 2 3 4 5 6 7 lt keys a b C
  • 使用 OOP 的闭包方法时如何实现受保护的成员?

    现在我正在使用实施 OOP 的闭包 http lua users org wiki ObjectOrientationClosureApproach在卢阿 下面是一个简短的示例 我的问题发生在尝试实施时stronger heal insid
  • 如何更新lua中的时间以反映执行过程中系统时区的变化?

    Problem 我想修改awful widget textclockAwesome wm 中的小部件可以立即反映系统时区的更改 这个小部件和所有的 Awesome wm 配置都是用 lua 编写的 目前 如果系统时区发生更改 小部件将继续根
  • Lua - 尝试调用全局(零值)

    执行此代码时 出现错误 尝试调用全局 forId 零值 function execute args local itemid 526 local bone forId itemid this is where the error occur
  • Flex:获取自己的 SWF 文件名?

    有没有办法以编程方式确定我的类正在运行的 swf 文件名 Thanks Stage http livedocs adobe com flex 3 langref flash display Stage html has a 加载器信息 ht
  • 在 Corona sdk 上保存高分?

    我想保存游戏中创建的高分 并且当玩家点击高分按钮时可以在主菜单中看到 有人可以帮助我吗 您可以使用SQLITE https docs coronalabs com api library sqlite3 index html将高分保存到数据
  • C 的哪些部分最可移植?

    我最近读到了 Lua 联合创始人 Luiz H de Figueredo 和 Roberto Ierusalimschy 的采访 他们讨论了 Lua 的设计和实现 至少可以说这是非常有趣的 然而 讨论的一部分让我想起了一些事情 Robert
  • 如何从 C 代码调用 powershell 脚本

    就我而言 我需要从 c 或 c 代码源调用 powershell 脚本 发现了一些非常笨拙且不适用于 c 的链接 我只是想要一个路线图 如果可能的话 调用列出代码中的目录内容的 powershell 脚本用 C 或 C 编写的片段 C 代码
  • 为什么 LuaJIT 和 Lua 中的数字舍入格式不同?

    Using string format 据说遵循 Csprintf 在 LuaJIT 轮次中格式化数字与我尝试过的所有其他 Lua 解释器不同 lua v Lua 5 4 1 Copyright C 1994 2020 Lua org PU
  • 自动将 Linux 文件名重命名为 Windows 中合法的新文件名

    我想将 linux 文件重命名为在 windows 中合法的文件名 它的长度不应超过允许的长度 并且不应包含 Windows 中不允许的字符 有时我将论文的标题复制到文件名 它们有特殊字符 例如 or 另外 从 pdf 中复制和粘贴标题时
  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 如何在Conky中实现一个基本的Lua功能?

    我正在尝试向我的 Conky 添加一个函数 该函数打印字符串的长度以用于调试目的 代码位于名为的文件内test lua 非常简单 function test word return string len word end 我这样加载它 在我
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • Lua 从 5.1 更新 - LUA_GLOBALSINDEX 问题

    我最近将旧的 Lua 5 1 项目更新到了该库的最新版本 但遇到了问题LUA GLOBALSINDEX 它变得不确定 我只用过它lua getfield函数 像这样 void luastartgame void if startgamefu
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的

随机推荐

  • 尝试在 Flask 应用程序中取消模型时出现 ModuleNotFoundError

    Python版本 3 6 9 我用过pickle将机器学习模型转储到文件中 当我尝试使用 Flask 对其运行预测时 它失败了ModuleNotFoundError No module named predictors 我如何修复此错误 以
  • 使用 jQuery 重定向[重复]

    这个问题在这里已经有答案了 所以我将 jquerymobile 用于我正在创建的应用程序 我有一个链接 如果所有验证都通过 我想通过 但如果失败 我想重定向 在 jquery 中是这样的 由于它是 jquerymobile 因此链接将是同一
  • 用于调用 REST 服务的 Java API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人可以建议一种更好的开源 Java API 来调用 REST 服务吗 还想知道 Restlet AP
  • 使用 javascript 屏幕延迟抓取网站 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试抓取一个有瞬间 JavaScript 延迟的网站 我目前正在使用 python 进行抓取 每当我 获取 页面时 JavaSc
  • Silverlight NavigationFramework 在导航时不会更改地址栏(不显示主题标签)

    我正在使用导航框架 基本上得到了一个用于导航的框架 我试过玩mainFrame JournalOwnership因为我想也许改变它可能与此有关 但没有任何改变 由于与导航相关的类结构非常小 因此我对我做错了什么感到有点困惑 因为我想不出可以
  • 赫尔姆出了什么问题?为什么它没有被广泛采用并优先用于 k8s 应用程序? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 到目前为止 Helm 是我所知道的唯一 K8s 包管理器 它可以帮助无缝部署和管理 k8s 应用程序依赖项 为什么这么多 K8s 应用程序仍然没
  • 从 pyinstaller 包访问 python 解释器 #2

    我正在尝试执行一个包含在 datas 中的 python 脚本 并捆绑到 pyinstaller 可执行文件中 在 Mac 上 我需要将参数传递给这个脚本 所以我不能只是 exec open read 在 pyinstaller 之外 sy
  • PayPal Webhook 验证 Java SDK

    我目前正在将 PayPal 智能支付按钮 集成到 Web 应用程序中 传递自定义字段并接收带有此数据的 Webhook 购买确认效果非常好 我在验证收到的 Webhook 时遇到问题 文档很差 导致 v1 已弃用 或 v2 Java SDK
  • .htaccess 中的多个 mod_rewrite 规则

    我很难让多个 mod rewrite 规则在我的 htaccess 文件中协同工作 在整个网站中 我想删除 www 来自所有 URL 我在文档根目录中使用以下内容 Options FollowSymLinks RewriteCond HTT
  • jsfiddle如何标记代码?有这个库吗?

    如果您曾经使用过 www jsfiddle net 您可能会注意到它用适当的颜色标记代码 以及各种其他帮助程序 例如将制表符转换为四个空格或shift tab 通过 Firebug 我看到它是通过 iFrame 来完成此操作的 有没有开源库
  • Clock_nanosleep() 尚不支持 CLOCK_MONOTONIC_RAW。这该如何处理呢?

    现在clock nanosleepDebian Jessie 上的 CLOCK MONOTONIC RAW 返回 EOPNOTSUPP 如何解决该问题并补偿可能应用于计时器循环中的 CLOCK MONOTONIC 的 NTP 调整 Is c
  • Oracle/SQL中ROWID的数据类型

    Oracle SQL中ROWID的数据类型是什么 这个值是如何存储的 以下链接解释了 ROWID 的数据类型是什么 ROWID 数据类型 http docs oracle com cd B19306 01 server 102 b14200
  • 如何在 emacs 中对多种语言进行拼写检查?

    我主要使用 HTML 编写文档emacs作为我的主要编辑 Emacs 允许您使用以下命令以交互方式对当前缓冲区进行拼写检查ispell buffer 由于我在多种语言之间切换 因此我在文件末尾有一个 HTML 注释 指定该文件的主词典和个人
  • Github 贡献日历日开始时间

    几天前 Github 推出了他们的新功能 贡献 https github com blog 1360 introducing contributions 我有一个疑问 这个日历的一天开始时间是几点 是使用我的本地时间还是 UTC 如果它使用
  • C语言中如何将负零转换为正零?

    你好 我正在学习 Objective C 我正在做经典的计算器示例 问题是 当我将零乘以任何负数时 我得到负零 并将结果放入 双 类型 为了看看发生了什么 我使用了调试器 这就是我得到的结果 gdb 打印 2 0 1 0 gdb 打印 双精
  • Jquery 搜索 - 不区分大小写

    我在 Jquery 脚本上获得了一些帮助 该脚本创建了可搜索 可切换的常见问题解答 代码可以在这里看到 http jsfiddle net pT6dB 62 http jsfiddle net pT6dB 62 问题是 如果单词 How 带
  • JBoss AS 6 中的 QuartzScheduler 注入

    如何将 QuartzScheduler 服务注入 JBoss AS 6 上的无状态 bean 中 Quartz 服务在 JBoss AS 6 启动期间启动 00 58 38 025 INFO QuartzScheduler Schedule
  • Glassfish 4 中的密码加密算法

    我最近将 Glassfish 从 3 1 2 更新到 4 0 并希望设置一个我之前在我的应用程序上使用过的 JDBCRealm 该应用程序使用基于 FORM 的身份验证 密码在数据库中使用 SHA 256 进行哈希处理 这是默认的摘要算法选
  • 查找目录中最新的文件而不读取其所有内容

    我试图在一个巨大的文件系统中找出最新的文件 一种方法是浏览所有目录 一次一个 读取其内容 选择最新文件等 明显的缺点是我必须得到all特定目录中的文件 我想知道 Python 1 中是否有一个 Unix 支持的 神奇 调用来获取目录中的最新
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上