1
我一直在使用ARGV来打开文件,但我觉得它笨重,我想让他们在不同的文件夹中。在不同的目录中打开文件来读取行 - ruby
我想打开我的talk_parser.rb中的input.txt文件,我也不想硬编码文件名。
我的目录(pwd是宾)
├── bin
│ └── talk_parser.rb
└── data
└── input.txt
试图
x = Dir.glob('../data/*.txt').to_s
file = File.open(File.expand_path(x))
,但我得到这个错误
talk_parser.rb:34:in `initialize':
No such file or directory @ rb_sysopen - /home/huvi/Desktop/test/bin/["../data/input.txt"] (Errno::ENOENT)
from talk_parser.rb:34:in `open'
from talk_parser.rb:34:in `<main>'
不知道该怎么办
'Dir#glob'返回'Array'。在这种情况下,你的'Array'将是“/ home/huvi/Desktop/test/data /”中的每个“* .txt”文件,因此对于初学者来说,你应该循环这些文件。如果你只想要第一个,那么把你的第一行'to_s'改成'first'。现在你在'Array'上调用'to_s',因此你的输出''[“../ data/input.txt”]'' – engineersmnky
你可以在'Dir :: glob'中使用'..'吗?或者它应该是'x = Dir.glob('**/data/*。txt')。第一个'(假设'data'目录中有一个文件)? – orde
@或好点。技术上你可以在'Dir :: glob'中使用'..',虽然它有很奇怪的结果,我很难理解 – engineersmnky