gpt4 book ai didi

ruby - 当我知道文件存在时,在 Dir.foreach block 期间获取 Errno::ENOENT?

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:35 25 4
gpt4 key购买 nike

我目前的路径设置为:

$: << "C:/Users/fireforkingjesus/ruby/note/"

我在这个文件夹中有这些东西:ruby/note/notes/

!IMPORTANT - folder
just.txt
inventory.txt
weapons.txt

如果我输入这段代码,它就可以正常工作:

Dir.foreach("notes/"){|file| puts file}

输出:

.  
..
!IMPORTANT
just.txt
inventory.txt
weapons.txt

但是这些代码不起作用:

Dir.foreach("notes/"){|file| puts file if File.exist?(file)}

上面这个^^放

.    
..

Dir.foreach("notes/"){|file| puts File.exist?(file)}

返回 true 2 次和 false 4 次

Dir.foreach("notes/"){ |file|  puts File.ftype(file)}

以上^^返回:“没有这样的文件或目录-!重要”(Errno::ENOENT)

我什至做到了:

f = "inventory.txt"    
puts "yes before foreach" if File.exist?("notes/inventory.txt")
Dir.foreach("notes/"){ |file|
puts "yes in foreach" if File.exist?("inventory.txt")
puts File.ftype(f)
}

我得到:

yes before foreach    
No such file or directory -inventory.txt (Errno::ENOENT)`

我有 Ruby 2.0、Windows 8。我想可能有权限?或某事idk我也在我爸爸的 Win vista 上试过了

最佳答案

仔细看看你的输出:

Dir.foreach("notes/"){|file| puts file}
# ----------^^^^^^^^

产生:

.
..
!IMPORTANT
just.txt
inventory.txt
weapons.txt

Dir.foreach正在将基本名称传递给 block ,因此如果 Dir 没有查看当前目录,您必须重新打开路径:

Dir.foreach("notes/") { |file| puts File.ftype("#{notes}/file") }

... 一切正常,当然,它们存在于每个目录中。

关于ruby - 当我知道文件存在时,在 Dir.foreach block 期间获取 Errno::ENOENT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19991442/

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