Recursion 计算目录中的代码行总数

Recursion 计算目录中的代码行总数,recursion,lua,filesystems,Recursion,Lua,Filesystems,我有一个包含多个子目录的目录,它们都有.lua文件。 我想计算所有文件中的代码行总数 我有lua方面的经验,但我从未做过文件系统方面的工作,所以我对这方面还不熟悉。我知道我必须递归地迭代主文件夹,但我不熟悉io库是如何工作的,所以如果有人能向我解释一下如何做到这一点,我会非常感激。是否使用Lua是一项要求?您可以使用快速Python脚本来实现这一点 像这样: import os for i in os.listdir(os.getcwd()): if i.endswith(".lua"

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


我有lua方面的经验,但我从未做过文件系统方面的工作,所以我对这方面还不熟悉。我知道我必须递归地迭代主文件夹,但我不熟悉io库是如何工作的,所以如果有人能向我解释一下如何做到这一点,我会非常感激。

是否使用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
这将打印当前工作目录中每个文件的行数


来自和的部分代码。

好的,我使用了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()

不,这不是要求,它只是我安装的唯一一种编程语言。我相信教程中有一节是关于设置Python环境的。请注意,我提供的代码是针对Python2而不是Python3的。在Linux上,您可以执行
find-名称“*.lua”-print0 | xargs-0 wc-l
。(如果您使用另一个操作系统,我肯定会有关于设置Linux的教程。)您的代码似乎导致:NameError:name“OS”未定义哎哟。我忘了说你必须进口东西。只需将导入操作系统
放在程序的开头。