这是我的代码
folder_results = Dir.foreach(Dir.pwd) {|x| File.extname(x) }
我也试过:
folder_results = Dir.foreach("nice/") {|x| File.extname(x) }
这是我的Ruby cmd错误,我已经多次尝试这种错误
你可以看到Ruby cmd中使用的ruby路径
编辑:
这就是文件目录看起来很漂亮:
答案 0 :(得分:1)
您应该将File.extname
结果保存到数组,而不是直接从Dir.foreach
分配结果,该结果始终返回nil。
folder_results = []
Dir.foreach(Dir.pwd) { |x| folder_results << File.extname(x) }
现在,您可以从folder_results
数组中获取文件扩展名。
否则,您可以使用map
。感谢engineersmnky指出了这一点。
folder_results = Dir.foreach(Dir.pwd).map { |x| File.extname(x) } –
答案 1 :(得分:0)
错误消息来自Dir.foreach
,并说提供的参数不是目录。
在你简单地把'nice'作为参数的情况下,我会得出结论,这个目录不存在,但由于错误消息也出现在Dir.pwd
作为参数,这意味着Ruby的想法是什么工作目录是,必须搞砸了。实际上,错误消息表明Dir.pwd
的结果是字符串pwd
,这是无意义的:Dir.pwd
始终返回绝对路径。为了验证确实如此,我会在违规行之前做puts(Dir.pwd)
,但我想这也会显示pwd
。
这意味着你必须找出你的程序中的哪个点工作目录搞砸了。程序启动时一定要好(但请检查!),然后缩小搜索范围,直至找到罪魁祸首。
除了这个问题,你的程序在逻辑上是有缺陷的。您计算所有文件扩展名,但随后将结果丢弃,而folder_results将始终为nil
。