如何从同一目录中的文件中读取?

时间:2012-10-11 04:19:39

标签: ruby

我非常喜欢初学者。我想学习读写文件。这就是我正在尝试的。

rdfile = File.open('bhaarat.txt', 'r+')

不幸的是,这是返回“C:/directoriesblahblah/ubuntu3.rb:1:in'initialize':没有这样的文件或目录 - bhaarat.txt(Errno :: ENOENT)

我找到了解决方案,但我不仅是Ruby的新手,而且是一般的编程新手,所以我无法得到一个对我有意义的答案。

提前致谢!

4 个答案:

答案 0 :(得分:11)

要获取当前文件的路径,您可以使用:

__FILE__

要获取当前文件所在的目录,您可以使用:

File.dirname(__FILE__)

要从字符串创建路径,您可以使用:

File.join('part1', 'part2', ...)

因此,要创建该目录中文件的路径,可以使用:

File.join(File.dirname(__FILE__), 'filename')

如果您的文件名为bhaarat.txt,则上述内容变为:

File.join(File.dirname(__FILE__), 'bhaarat.txt')

如果您在代码中替换它,您将获得:

rdfile = File.open(File.join(File.dirname(__FILE__), 'bhaarat.txt'), 'r+')

如果需要,您还可以将其设为单独的变量,以使代码更具可读性:

path = File.join(File.dirname(__FILE__), 'bhaarat.txt')
rdfile = File.open(path, 'r+')

答案 1 :(得分:2)

在当前目录中搜索文件,而不是脚本所在的目录。

C:\> ruby scripts\ubuntu3.rb
No such file or directory - bhaarat.txt

首先移动到文件位置,然后运行脚本。例如,如果文件与脚本位于同一目录中:

C:\> cd scripts
C:\scripts> ruby ubuntu3.rb

答案 2 :(得分:1)

找到了解决问题的方法。搜索得更加努力,发现this

我更改了原始代码

rdfile = File.open('bhaarat.txt', 'r+')

rdfile = File.open(File.join(File.dirname(__FILE__),'bhaarat.txt'), 'r+')

这使它看起来在你的.rb文件的目录中,而不是你的命令提示符当前所在的目录。

答案 3 :(得分:0)

File.read(File.join(__dir__, 'filename'))