我非常喜欢初学者。我想学习读写文件。这就是我正在尝试的。
rdfile = File.open('bhaarat.txt', 'r+')
不幸的是,这是返回“C:/directoriesblahblah/ubuntu3.rb:1:in'initialize':没有这样的文件或目录 - bhaarat.txt(Errno :: ENOENT)
我找到了解决方案,但我不仅是Ruby的新手,而且是一般的编程新手,所以我无法得到一个对我有意义的答案。
提前致谢!
答案 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'))