gpt4 book ai didi

ruby - Ruby 中的目录遍历

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:53 26 4
gpt4 key购买 nike

我一直在尝试使用简单的递归方法在 Ruby 中为一个更大的程序的一部分实现目录遍历。但是我发现Dir.foreach不包括其中的目录。我怎样才能列出它们?

代码:

def walk(start)
Dir.foreach(start) do |x|
if x == "." or x == ".."
next
elsif File.directory?(x)
walk(x)
else
puts x
end
end
end

最佳答案

问题是每次递归,你传递给File.directory?的路径is no 只是实体(文件或目录)名称;所有上下文都丢失了。所以说你进入one/two/three/检查是否one/two/three/file.txt是一个目录,File.directory?刚得到"file.txt"作为路径而不是整个东西,从顶级目录的角度来看。每次递归时都必须维护相对路径。这似乎工作正常:

def walk(start)
Dir.foreach(start) do |x|
path = File.join(start, x)
if x == "." or x == ".."
next
elsif File.directory?(path)
puts path + "/" # remove this line if you want; just prints directories
walk(path)
else
puts x
end
end
end

关于ruby - Ruby 中的目录遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15697983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com