Подтвердить что ты не робот

Как читать строки за строкой текстовый файл в ruby ​​(его размещение на s3)?

Я знаю, что сделал это раньше и нашел простой набор кода, но я не могу его запомнить или найти: (.

У меня есть текстовый файл записей, которые я хочу импортировать в мое приложение Rails 3.

Каждая строка представляет собой запись. Потенциально это может быть разграничение табуляции для атрибутов, но отлично с одним значением.

Как это сделать?

4b9b3361

Ответ 2

Вы хотите IO.foreach:

IO.foreach('foo.txt') do |line|
  # process the line of text here
end

В качестве альтернативы, если это действительно табуляция, вы можете использовать библиотеку CSV:

File.open('foo.txt') do |f|
  CSV.foreach(f, col_sep:"\t") do |csv_row|
    # All parsed for you
  end
end

Ответ 3

  IO.foreach("input.txt") do |line| 
    out.puts line
    # You might be able to use split or something to get attributes
    atts = line.split
  end

Ответ 5

Вы можете использовать OpenURI для чтения удаленных или локальных файлов.

Предполагая, что ваша модель имеет вложение с именем file:

# If object is stored in amazon S3, access it through url
file_path = record.file.respond_to?(:s3_object) ? record.file.url : record.file.path
open(file_path) do |file|
  file.each_line do |line|
    # In your case, you can split items using tabs
    line.split("\t").each do |item|
      # Process item
    end
  end
end