我有一个正在阅读excel电子表格的脚本。每个文件在打开之前都会被复制到一个新位置,从而确保文件中没有其他人同时存在。奇怪的是,有时我的脚本会中断,因为文件无法在新位置找到。
# copy the file to a new destination
# the file is originating on a windows file server,
# the destination is my local downloads folder on a windows machine.
FileUtils.cp(some_filepath, destination_path)
# the next line gives an error, because the file doesnt exist at its location yet
Spreadsheet.open(file_at_new_destination)
我尝试过一个until
块,在脚本继续之前进行检查以查看文件是否存在,但即使这样也不起作用,只是永远运行。
# check if file exists
until File.exist?(file_at_new_destination) do
print '.'
end
如何确保脚本不会继续运行而文件已完成移动?
这是我在rake任务中出现的错误
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen -
C:\Users\ALilland\Downloads\tmp_dest\102035 Western Digital Job Status Reports.xls
答案 0 :(得分:1)
Ruby是单线程的,您不必等待文件被复制到目标路径。
在复制包含所有子目录的目录时,使用 cp_r 而不是 cp 。
# copy directory to destination directory recursively.
FileUtils.cp_r(some_filepath, destination_path)
if File.exist?(file_at_new_destination)
Spreadsheet.open(file_at_new_destination)
end