这听起来很愚蠢,但它给了我3小时的头部撞击...... !! 我创建了一个类方法,我在其中提取文件基名(放在Root文件夹中)。问题是IO.readlines方法不接受带有从提取返回的基本名称的文件。它返回错误:
./lib/fileCheck.rb:36:in `readlines': No such file or directory - (Errno::ENOENT)
但是一旦我在readlines中手动输入文件基本名称,它就会起作用。这是类方法:
class FileCheck
def self.read_file
file = File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s)
file = IO.readlines(file)
return file
end
end
没有结果,但只要我手动放置文件名,它就能完美运行。
def self.read_file
#file = File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s)
file = IO.readlines('sample.txt')
return file
end
我用irb和声明检查
File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s)
返回String类的文件基名。
任何建议?????
答案 0 :(得分:1)
使用expand_path
或join
无关紧要。您的代码中仍然存在市长问题:
File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s)
Dir[]
也称为Dir.glob
返回一个数组!确保选择其中一个元素而不是调用to_s
。当有多个文件时,你会遇到问题。