Ruby';s File.open提供“文件”;没有这样的文件或目录-text.txt(Errno::enoint)";错误
我在Win7机器上安装了Ruby 1.9.2。创建了一个简单的Ruby';s File.open提供“文件”;没有这样的文件或目录-text.txt(Errno::enoint)";错误,ruby,Ruby,我在Win7机器上安装了Ruby 1.9.2。创建了一个简单的analyzer.rb文件。它有一行: File.open("text.txt").each {|line| puts line} 当我运行代码时,会出现以下错误: analyzer.rb:1:in `initialize': No such file or directory - text.txt (Errno::ENOENT) from analyzer.rb:1:in `open' from analyzer.rb:1:in
analyzer.rb
文件。它有一行:
File.open("text.txt").each {|line| puts line}
当我运行代码时,会出现以下错误:
analyzer.rb:1:in `initialize': No such file or directory - text.txt (Errno::ENOENT)
from analyzer.rb:1:in `open'
from analyzer.rb:1:in `<main>'
Exit code: 1
analyzer.rb:1:in'initialize':没有这样的文件或目录-text.txt(Errno::enoint)
来自analyzer.rb:1:处于“打开”状态
来自analyzer.rb:1:in`'
退出代码:1
我不明白。在与
analyzer.rb
文件相同的目录中有一个text.txt
文件。我还尝试输入文件的绝对路径,C:\Ruby192\text.txt
,但没有骰子。我遗漏了什么?enoint
表示它不在那里
只需将代码更新为:
File.open(File.dirname(__FILE__) + '/text.txt').each {|line| puts line}
试用
Dir.glob(".")
要查看目录中的内容(以及它正在查看的目录)。首先要确定运行脚本的当前工作目录是什么。
在开头添加此行:
put Dir.pwd
这将告诉您ruby运行脚本的当前工作目录。你很可能会发现它并不是你想象的那样。然后确保为windows正确指定了路径名。请参阅此处的文档,了解如何正确设置windows路径名的格式:
然后使用Dir.chdir
将工作目录更改为text.txt所在的位置,或者根据上面IO文档中的说明指定文件的绝对路径名。应该可以了
编辑
如果要将文本文件放在脚本文件中,添加第三个解决方案可能是最方便的解决方案:
Dir.chdir(File.dirname(__FILE__))
这将自动将当前工作目录更改为与运行脚本的
.rb
文件相同的目录 除了在错误的目录中之外,我还被另一个变体绊倒了:
我有一个文件.open(my|u文件)。每个{line | put line}
都在爆炸,但在我工作的目录中有一个同名的东西(命令行中的ls显示了名称)。我使用文件进行了检查。是否存在?(我的\u文件)
奇怪地返回了false
。说明:my_file
是一个符号链接,目标已不存在!由于File.exists?
将跟随一个符号链接,它将显示false
,尽管链接仍然存在 请在STDIN中使用chomp()
或chomp()
i、 e.test1.rb
print 'Enter File name: '
fname = STDIN.gets.chomp() # or fname = gets.chomp()
fname_read = File.open(fname)
puts fname_read.read()
卡斯珀的回答也是如此:
puts Dir.pwd
一旦知道当前工作目录,就指定相对于该目录的文件路径
例如,如果您的工作目录是projectroot,您可以像下面这样直接打开它下面的文件
json_file = File.read(myfile.json)
谢谢你的回复。然而,这似乎没有帮助。尽管text.txt存在于Ruby安装目录中.rb文件旁边,但仍然会出现相同的错误。它可能找不到它的一些可能原因是什么?实际上最好的解决方案可能是
Dir.chdir(File.dirname(\uu File\uu))
。这样,您将保证工作目录与脚本相同。您还可以使用File.open(File.expand_路径(\uuuuu FILE\uuuuu,
…正如文中所建议的那样。Dir.pwd成功了。它在看C:\Ruby192,而我把文本文件放在C:\Ruby192\bin中。一旦我把它放在正确的位置,它就像一个符咒一样工作。谢谢!@愤怒的骆驼:你一般不应该把文本文件放在那里。你越是在那里乱搞文件,不是他更可能是你要删除一些不应该删除的内容。谢谢!Nagios在后台运行ruby脚本时也遇到了同样的问题…Dir.chdir
成功了!对于我们这些基于脚本错误盲目搜索此内容的人,这可能意味着你要查找的文件不存在!如果你的代码没有检查文件这可能是你的全部问题。