计算目录中的总代码行数

时间:2015-11-19 18:09:53

标签: recursion lua filesystems

我有一个包含多个子目录的目录,它们都有.lua文件。 我想计算所有文件中的代码行。

我有lua的经验,但我从未做过文件系统的事情,所以我对此不熟悉。我知道我必须递归迭代主文件夹,但我不熟悉io库的工作方式,所以如果有人能解释我怎么做,我真的很感激

2 个答案:

答案 0 :(得分:2)

使用Lua是一项要求吗?您可以使用快速Python脚本来执行此操作。

像这样:

import os

for i in os.listdir(os.getcwd()):
    if i.endswith(".lua"): 
        with open(i) as f:
            num_lines = sum(1 for _ in f)
            print i + str(num_lines)
            # Do whatever else you want to do with the number of lines
        continue
    else:
        continue

这将打印当前工作目录中每个文件的行数。

来自herehere的部分代码。

答案 1 :(得分:0)

好吧我使用了LuaFileSystem,似乎工作正常。 感谢Rob Rose的python示例,尽管我没有让它正常工作。

require("lfs")
local numlines = 0

function attrdir (path)
    for file in lfs.dir(path) do
        if file ~= "." and file ~= ".." then
            local f = path..'/'..file
            local attr = lfs.attributes (f)
            assert(type(attr) == "table")
            if attr.mode == "directory" then
                attrdir(f)
            else
                --print(f)
                --f = io.open(f, "r")
                for line in io.lines(f) do
                numlines = numlines + 1
                end
            end
        end
    end
end

function main()
    attrdir(".")
    print("total lines in working directory: "..numlines)
end

local s,e = pcall(main)
if not s then
    print(e)
end
io.read()