我正在尝试读取包含文件路径的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.escape
,pathname
类,system move
和rename
。
答案 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