8

我是个初学者。我想学习读写文件。这就是我正在尝试的。

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

不幸的是,这将返回“C:/directoriesblahblah/ubuntu3.rb:1:in 'initialize': No such file or directory - bhaarat.txt (Errno::ENOENT)

我找到了解决方案,但我不仅对 Ruby 不熟悉,而且对一般编程也不熟悉,所以我无法从中得到对我有意义的答案。

提前致谢!

4

4 回答 4

15

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

__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+')
于 2012-10-11T04:23:44.250 回答
2

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

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

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

C:\> cd scripts
C:\scripts> ruby ubuntu3.rb
于 2012-10-11T04:31:28.710 回答
2
File.read(File.join(__dir__, 'filename'))
于 2018-11-13T15:23:21.620 回答
1

找到了一些可以解决问题的方法。稍微搜索了一下,发现了这个

我改变了我的原始代码

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

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

这使它在您的 .rb 文件的目录中查找,而不是您的命令提示符当前所在的目录。

于 2012-10-11T04:32:39.953 回答