我有以下Ruby脚本,它应该将文件的名称插入 contents 数组中:
filelist = Dir.glob('C:\Users\abc\Desktop\drg\*.*')
print filelist
filelist.each do |filepathname|
contents = IO.read(filepathname)
puts contents
end
对于上面的代码,我没有得到 filelist 或内容的输出。那是为什么?
答案 0 :(得分:1)
Dir.glob使用反斜杠作为转义字符,因此路径不会是您认为的那样。引用:
逃脱下一个元字符。
请注意,这意味着你不能在windows上使用反斜杠作为glob的一部分,即Dir [" c:\ foo *"]将不起作用,使用Dir [" c:/ foo *"]而不是。
答案 1 :(得分:1)
在当前字符串中,反斜杠充当转义字符,而不是路径分隔符。更详细,但可能更规范的方法是使用File#join使用File :: SEPARATOR连接路径的各个部分。例如:
path = File.join "C:", "Users", "abc", "Desktop", "drg", "*.*"
Dir.glob path
这种方法的另一个好处是你可以检查 path 变量以确保它有效,这比直接用globbing更加可测试和调试。