使用lua提取文件数据

这是我用 Lua 尝试做的事情。

我有很多图片需要在两个或两个以上的计算机之间传输。我总是会有多个图片的拷贝。我想让我的 Lua 代码从文件夹中获取所有文件名,并允许我输入一个搜索过滤器(文件名),程序将比较文件名列表并告知我文件是否已经在文件夹中存在。我过去几天一直在想如何让此代码工作,但无法成功。目前我只能做出一个文本框并使用以下代码让 Lua 返回有关文件夹中文件的数据:

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

标准的 Lua 并没有实现你想要的功能机制。它是为嵌入式系统设计的脚本语言,不像 Python 具有庞大、功能丰富的运行时库。

如果你想实现这个功能,可以考虑使用 Lua FileSystem 模块。它可以获取文件夹列表等一些功能。

2012-12-02 01:33:28
用户1847592
用户1847592

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

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()
   -- 如果文件名包含国家字符
   -- 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-02 04:22:33