我知道我這樣做過,發現一組簡單的代碼,但我不記得或發現它:(。如何逐行讀取ruby中的文本文件(在s3上託管它)?
我有我想導入到我的Rails 3應用程序記錄的文本文件。
每一行代表一個記錄潛在的可能是製表符分隔的屬性,但我很好,只是一個單一的值以及
我如何做到這一點
我知道我這樣做過,發現一組簡單的代碼,但我不記得或發現它:(。如何逐行讀取ruby中的文本文件(在s3上託管它)?
我有我想導入到我的Rails 3應用程序記錄的文本文件。
每一行代表一個記錄潛在的可能是製表符分隔的屬性,但我很好,只是一個單一的值以及
我如何做到這一點
你想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
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
File.open("my/file/path", "r").each_line do |line|
# name: "Angela" job: "Writer" ...
data = line.split(/\t/)
name, job = data.map{|d| d.split(": ")[1] }.flatten
end
相關主題
有你嘗試使用OpenURI
(http://ruby-doc.org/stdlib-2.1.2/libdoc/open-uri/rdoc/OpenURI.html)?你必須讓你的文件可以從S3訪問。
或嘗試使用de aws-sdk
寶石(http://aws.amazon.com/sdk-for-ruby)。
這些文件將具有權限,但我想它仍然需要能夠使用File類的頂部的答案來通過它,我不清楚它可以。 – Angela 2014-10-04 04:43:58
您可以使用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
是否IO.foreach提供一個迭代器? – 2017-09-16 10:48:02
其實這是在這裏回答:https://stackoverflow.com/a/16732186/3114742 – 2017-09-16 10:49:04