Открытие одинаковых имен файлов в нескольких каталогах с помощью Ruby - PullRequest
0 голосов
/ 16 января 2019

С помощью Ruby необходимо выполнить следующие действия:

  • Каталог A и каталог B будут иметь одинаковое количество файлов XML и одинаковые имена файлов.

Шаг1: * Перейдите в каталог A (каталог A содержит X файлов XML). * Внутри каталога A возьмите первый файл XML и сохраните имя файла, а также откройте файл

Шаг2: * Перейдите в каталог B (в каталоге B будет такое же количество файлов XML с теми же именами файлов, что и в каталоге A) * Внутри каталога B откройте то же имя файла XML, которое было сохранено и открыто в каталоге A.

Шаг 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

1 Ответ

0 голосов
/ 16 января 2019

Нет необходимости перебирать другой каталог, просто посмотрите, существует ли там файл с таким же именем.

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
...