我有一个包含多个子目录的目录,它们都有.lua文件。 我想计算所有文件中的代码行。
我有lua的经验,但我从未做过文件系统的事情,所以我对此不熟悉。我知道我必须递归迭代主文件夹,但我不熟悉io库的工作方式,所以如果有人能解释我怎么做,我真的很感激
答案 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
这将打印当前工作目录中每个文件的行数。
答案 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()