Как сохранить массив Ruby в файл?
Как сохранить массив Ruby в файл?
Ответ 1
Существует несколько способов сброса массива на диск. Вам нужно решить, хотите ли вы сериализоваться в двоичном формате или в текстовом формате.
Для двоичной сериализации вы можете посмотреть Marshal
В текстовом формате вы можете использовать json, yaml, xml (с rexml, builder,...),...
Ответ 2
Я не уверен, что именно вы хотите, но, чтобы сериализовать массив, записать его в файл и прочитать, вы можете использовать это:
fruits = %w{mango banana apple guava}
=> ["mango", "banana", "apple", "guava"]
serialized_array = Marshal.dump(fruits)
=> "\004\b[\t\"\nmango\"\vbanana\"\napple\"\nguava"
File.open('/tmp/fruits_file.txt', 'w') {|f| f.write(serialized_array) }
=> 33
# read the file back
fruits = Marshal.load File.read('/tmp/fruits_file.txt')
=> ["mango", "banana", "apple", "guava"]
Существуют и другие альтернативы, которые вы можете исследовать, например json
и YAML
.
Ответ 3
Чтобы просто выгрузить массив в файл в стандартном формате [a, b, c]:
require 'pp'
$stdout = File.open('path/to/file.txt', 'w')
pp myArray
Это может быть не так полезно, возможно, вы захотите его прочитать? В этом случае вы можете использовать json. Установите с помощью rubygems с помощью gem install json
.
require 'rubygems'
require 'json'
$stdout = File.open('path/to/file.txt', 'w')
puts myArray.to_json
Снова прочитайте:
require 'rubygems'
require 'json'
buffer = File.open('path/to/file.txt', 'r').read
myArray = JSON.parse(buffer)
Ответ 4
Некоторые стандартные параметры для сериализации данных в Ruby:
(Есть другие, возможно лучшие/более быстрые реализации YAML и JSON, но я привязываюсь к встроенным функциям для начала.)
На практике я, кажется, чаще всего вижу YAML, но это может не показаться ничем реальным.
Ответ 5
Вот пример быстрого yaml
config = {"rank" => "Admiral", "name"=>"Akbar",
"wallet_value" => 9, "bills" => [5,1,1,2]}
open('store.yml', 'w') {|f| YAML.dump(config, f)}
loaded = open('store.yml') {|f| YAML.load(f) }
p loaded
# => {"name"=>"Akbar", "wallet_value"=>9, \
# "bills"=>[5, 1, 1, 2], "rank"=>"Admiral"}
Ответ 6
Пример: напишите text_area в файл, где text_area - это массив строк.
File.open('output.txt', 'w') { |f| text_area.each { |line| f << line } }
Код >
Не забудьте выполнить проверку ошибок при работе с файлами:)
Ответ 7
Файлы Afaik.. содержат строки не массивы. Когда вы читаете файлы, данные затем могут быть сохранены в массиве или других структурах данных. Я очень хочу знать, есть ли другой способ.