字符串到路径名Ruby

时间:2014-08-14 04:15:42

标签: ruby parsing csv path

我正在尝试读取包含文件路径的csv列并移动该文件。我可以遍历csv并将对象作为字符串。但是,当我按照这样的方式调用文件时,

require 'csv'    
require 'fileutils'

CSV.foreach('file.csv', :headers => true) do |csv_obj|
  path = csv_obj['Filename'] 
  name = path.split('/')[2]
  dest = 'folder/'
  FileUtils.mv "#{path}", "#{dest}"
end

我明白了:

  

fileutils.rb:1515:在`stat':没有这样的文件或目录 - Spam / Jane April - 45 FAC(IDRI 2)/ JaneA somewebsite 2014-03-25 040024 - IDRI.pdf(Errno :: ENOENT)

在此文件中,csv的第一次迭代csv_obj

  

" Spam / Jane April - 45 FAC(IDRI 2)/ JaneA somewebsite 2014-03-25 040024 - IDRI.pdf"

文件和目标文件夹都存在。我认为错误是逃避字符。我尝试使用Shellwords.escapepathname类,system moverename

1 个答案:

答案 0 :(得分:1)

我不相信逃避角色是你的问题。相对于运行ruby脚本的位置,路径可能不正确。尝试像

这样的东西
# get the absolute path of your script's location
current_dir = File.expand_path(File.dirname(__FILE__))

# get absolute path of your .pdf file
abs_path = File.join(current_dir, path)

if !File.exists?(abs_path)
    puts "#{abs_path} does not exist"
end