我的代码中有一个奇怪的,重复出现的错误。很少,方法Dir.mkdir
抛出`mkdir': Permission denied - <file_name> (Errno::EACCES)
,令人惊讶的是,有时它只是起作用(代码中没有任何单一更改或任何其他内容)。
以下是代码:
data.each_with_index do |row, index|
#Make directory for each row:
row_name = "row_#{index}";
#Dir.rmdir just in-case, same error occurs without it.
(FileUtils.rm_r(row_name) || Dir.rmdir(row_name)) if File.exist?(row_name) #Remove previous directory
Dir.mkdir(row_name);
row.each_with_index do |(key, value), index|
#Make file for every record
File.open("#{row_name}/#{index}.rtf", 'w') do |f|
f.write value
f.close #Just in-case, even though it's automatically called(no change without it)
end
end
end
错误很少发生(执行此代码大约每4次一次)。
为什么即使没有对代码进行任何更改,我也会收到此错误? 可能来自过度创建目录吗?(每次执行平均创建约60个目录)
答案 0 :(得分:1)
问题是由操作系统阻止脚本过快删除文件引起的,解决方法是在进入循环之前删除所有文件。工作得很好。