Ruby чтение / запись в файл в 1 строке кода - PullRequest
9 голосов
/ 19 сентября 2011

Я новичок в Ruby, я работаю над некоторыми катами и застрял в этой глупой проблеме. Мне нужно скопировать содержимое 1 файла в новый файл в 1 строке кода

Первая попытка:

File.open(out, 'w').write(File.open(in).read)

Хорошо, но это неправильно, мне нужно закрыть файлы:

File.open(out, 'w') { |outf| outf.write(File.open(in).read) }

И затем, конечно, закройте текст:

File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } }

Это то, что я придумал, но для меня это не похоже на 1 строку кода: (

Идеи

С уважением,

Ответы [ 4 ]

25 голосов
/ 19 сентября 2011

Ruby 1.9.3 и выше имеет

File.write(name, string, [offset], open_args)

команда, позволяющая записывать файл напрямую. name - это имя файла, string - это то, что вы хотите написать, а остальные аргументы выше моей головы.

Некоторые ссылки для этого: https://github.com/ruby/ruby/blob/ruby_1_9_3/NEWS, http://bugs.ruby -lang.org / Issues / 1081 (прокрутите вниз).

14 голосов
/ 19 сентября 2011

Есть много способов.Вы можете просто вызвать командную строку, например:

`cp path1 path2`

Но я думаю, вы ищете что-то вроде:

File.open('foo.txt', 'w') { |f| f.write(File.read('bar.txt')) }
2 голосов
/ 19 сентября 2011

Вы можете сделать следующее:

File.open(out_file, "w") {|f| f.write IO.read(in_file)}
1 голос
/ 25 марта 2016

Вы можете попробовать:

IO.binwrite('to-filename', IO.binread('from-filename'))

Проверить документы по рубину:

IO :: binwrite & IO :: binread

...