Ruby中如何实现Python的os.walk功能?
有没有人知道在Ruby里面有没有现成的模块或者函数可以用来遍历文件系统的目录和文件?我想找一个类似于Python里面的os.walk
的东西。我找到的最接近的模块是Find
,但是它需要额外的工作才能完成遍历。
Python的代码大概是这样的:
for root, dirs, files in os.walk('.'):
for name in files:
print name
for name in dirs:
print name
3 个回答
5
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。比如,有些人可能会在使用某些工具或库时,遇到错误或者不明白怎么用。这种时候,查阅相关的资料或者在网上提问就显得特别重要。
在StackOverflow这样的社区,很多人会分享他们的经验和解决方案。你可以在这里找到很多关于编程的问题和答案,帮助你更好地理解和解决问题。
总之,遇到问题时不要着急,先查查资料,看看别人是怎么解决的,慢慢你就会变得越来越熟练了。
require 'pathname'
def os_walk(dir)
root = Pathname(dir)
files, dirs = [], []
Pathname(root).find do |path|
unless path == root
dirs << path if path.directory?
files << path if path.file?
end
end
[root, files, dirs]
end
root, files, dirs = os_walk('.')
11
Find 对我来说看起来很简单:
require "find"
Find.find('mydir'){|f| puts f}
27
下面的代码会递归地打印出所有的文件。然后你可以用 File.directory? 来判断它是一个文件夹还是一个文件。
Dir['**/*'].each { |f| print f }