希望使用Ruby进行以下操作:
步骤1: *进入目录A(目录A具有X个XML文件) *在目录A中,获取第一个XML文件并保存文件名,然后打开文件
步骤2: *进入目录B(目录B将具有与目录A相同数量的具有相同文件名的XML文件) *在目录B中,打开在目录A中保存并打开的XML文件名。
步骤3 :(我已经完成了这一部分)** * 比较两个文件(我已经完成了这一部分)**
第4步: *对两个目录中的所有XML文件重复此操作。
我已经尝试了一些方法,但是由于某种原因,每个文件都发生了循环,而不是一次,Dir B的第二个循环也没有执行:
id_dir = "#{Dir.pwd}"+"/id_responses"
ht_dir = "#{Dir.pwd}"+"/ht_responses"
Dir.foreach(id_dir) do |id_file|
next if id_file == '.' or id_file == '..'
id_file = File.open("#{id_dir}/#{id_file}", 'r')
doc1 = Nokogiri::XML::Document.parse(File.open(id_file))
Dir["#{Dir.pwd}"+"/ht_responses/#{id_file}"].each do |ht_file|
next if id_file == '.' or id_file == '..'
doc2 = Nokogiri::XML::Document.parse(File.open(ht_file))
end
end
答案 0 :(得分:1)
无需遍历另一个目录,只需查看是否存在同名文件即可。
id_dir = "#{Dir.pwd}"+"/id_responses"
ht_dir = "#{Dir.pwd}"+"/ht_responses"
Dir.foreach(id_dir) do |id_file|
next if id_file == '.' or id_file == '..'
id_file_path = File.join(id_dir, id_file)
ht_file_path = File.join(ht_dir, id_file)
next unless File.exist?(ht_file_path)
doc1 = Nokogiri::XML::Document.parse(File.open(id_file_path, 'r'))
doc2 = Nokogiri::XML::Document.parse(File.open(ht_file_path, 'r'))
end