1

这就是我一直在尝试用 lua 做的事情。

我有大量图片在两台以上的计算机之间来回传输。我总是有多个图片副本。我希望我的 lua 代码从文件夹中获取所有文件名,并允许我输入程序将与文件名列表进行比较的搜索过滤器(文件名),并让我知道它是否已经在文件夹中或不是。在过去的几天里,我一直在绞尽脑汁想让它工作,但没有运气,到目前为止,我所得到的只是制作的文本框,我可以让 lua 返回有关文件夹中文件的数据:

local f = io.popen("dir \"C:\\mydir\\\"")
if f then
    print(f:read("*a"))
else
    print("failed to read")
end
4

2 回答 2

3

标准 Lua 没有做你想做的事的机制。它是一种为嵌入式系统设计的脚本语言,与 Python 不同,Python 具有大量、功能丰富的运行时库。

如果你想这样做,你应该考虑使用Lua FileSystem 模块。它可以获取目录列表之类的东西。

于 2012-12-02T01:33:28.927 回答
1

如何从某个文件夹中获取文件名数组:

local function get_files(path, prepend_path_to_filenames)
   if path:sub(-1) ~= '\\' then
      path = path..'\\'
   end
   local pipe = io.popen('dir /b/a-d "'..path..'*.*" 2> nul')
   local output = pipe:read'*a'
   pipe:close()
   -- If your file names contain national characters
   -- output = convert_OEM_to_ANSI(output)
   local files = {}
   for filename in output:gmatch'[^\r\n]+' do
      if prepend_path_to_filenames then
         filename = path..filename
      end
      table.insert(files, filename)
   end
   return files
end

local array_of_files = get_files('C:\\mydir', false)
for _, fn in ipairs(array_of_files) do
   print(fn)
end

如果路径不存在(空文件夹和不存在文件夹之间没有区别),将返回空数组。

于 2012-12-02T04:22:33.013 回答