我在Win 7机器上安装了Ruby 1.9.2.创建了一个简单的analyzer.rb
文件.它有这一行:
File.open("text.txt").each {|line| puts line}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它给了我这个错误:
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
Run Code Online (Sandbox Code Playgroud)
我不明白.有一个text.txt
在同一个目录中文件analyzer.rb
的文件.我也尝试过输入文件的绝对路径C:\Ruby192\text.txt
,但没有骰子.我错过了什么?
Cas*_*per 72
首先要弄清楚当前工作目录对于正在运行的脚本是什么.
在开头添加此行:
puts Dir.pwd
.
这将告诉您当前工作目录ruby正在运行您的脚本.您很可能会发现它不在您认为的位置.然后确保为Windows正确指定路径名.请参阅此处的文档,了解如何正确格式化Windows的路径名:
http://www.ruby-doc.org/core/classes/IO.html
然后使用Dir.chdir
将工作目录更改为text.txt所在的位置,或者根据上面IO文档中的说明指定文件的绝对路径名.应该这样做......
编辑
添加第三个可能是最方便的解决方案,如果您将文本文件放在脚本文件中:
Dir.chdir(File.dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)
这将自动将当前工作目录更改为与.rb
运行脚本的文件相同的目录.
Til*_*ill 13
ENOENT
意味着它不在那里.
只需将您的代码更新为:
File.open(File.dirname(__FILE__) + '/text.txt').each {|line| puts line}
Run Code Online (Sandbox Code Playgroud)
小智 6
请使用chomp()
或chomp()
与标准输入
即 test1.rb
print 'Enter File name: '
fname = STDIN.gets.chomp() # or fname = gets.chomp()
fname_read = File.open(fname)
puts fname_read.read()
Run Code Online (Sandbox Code Playgroud)