2015-11-11 2 views
0

У меня есть структура каталогов следующим образом:записи в файлы, созданные с помощью рубина

../../../../../TESTS/Test_A/myTest_A/ 
../../../../../TESTS/Test_B/myTest_B/ 
../../../../../TESTS/Test_C/myTest_C/ 
../../../../../TESTS/Test_D/myTest_D/ 

В каждую из них я создаю файл «myfile.txt», используя следующий код: рубиновый

Dir['../../../../../TESTS/Test_*/*/'].each do |dir| 
    File.new File.join(dir, 'myfile.txt'), 'w+' 
end 

так далеко это работает. Теперь я хотел бы также написать что-то в файлы соответственно после создания, код выглядит сейчас:

Dir['../../../../../TESTS/Test_*/*/'].each do |dir| 
    File.new File.join(dir, 'myfile.txt'), 'w+' 
    File.open('../../../../../TESTS/Test_*/*/myfile.txt','w+') do |f| 
    f.puts "HELLO" 
    end 
end 

Файлы пустые? В чем проблема?

ответ

1

File#open не обрабатывается * как Dir#[]. Вам необходимо передать точный путь к файлу.

Dir['../../../../../TESTS/Test_*/*/'].each do |path| 
    File.open(path, 'w+') { |f| f.puts "HELLO" } 
end 
+0

Точно. Обратите внимание, что 'File.new' также является посторонним. Просто замените 'File.join (dir, 'myfile.txt')' на "путь" в приведенном выше коде. –

Смежные вопросы