| Memoize | BasicWerk
						 
						EC Support
						 
						Technique
						 
						Facebook | 
| 20140817190653_ruby_IO | 
| ruby_IO 
 ファイルを1行ずつ読んで何かするならこれで十分だ。csv2tsv.rb 
 
#! /usr/bin/ruby
# coding: utf-8
 
while line = gets
    puts line.gsub(/,/, "\t")
end
 
 読み込むファイル、書き出すファイルはシェルのコマンドラインでコントロールすれば良い。 % csv2tsv.rb sample.csv id name price currency 1 item-A 2980 JPY 2 item-B 900 JPY 3 item-C 3980 JPY 4 item-D 1980 JPY % csv2tsv.rb sample.csv > sample.tsv % cat sample.tsv id name price currency 1 item-A 2980 JPY 2 item-B 900 JPY 3 item-C 3980 JPY 4 item-D 1980 JPY 
 ちなみに puts の動作としては、文字列の最後に改行が「なければ」加える。 そもそも改行文字で終わる文字列なら新たに改行文字は付け足されない。 [57] pry(main)> puts "aaa" aaa => nil [58] pry(main)> puts "aaa\n" aaa => nil 
 ファイルを一気読みするなら IO.read, IO.readlines が便利だ。 
 
# string
IO.read("sample.csv")
# => "id,name,price,currency\n1,item-A,2980,JPY\n2,item-B,900,JPY\n3,item-C,3980,JPY\n4,item-D,1980,JPY\n"
 
# Array
IO.readlines("sample.csv")
# => ["id,name,price,currency\n", "1,item-A,2980,JPY\n", 
      "2,item-B,900,JPY\n", "3,item-C,3980,JPY\n", 
      "4,item-D,1980,JPY\n"]
 
 文字列ストリームstringIO.rb 
 
#! /usr/bin/ruby
# coding: utf-8
 
require 'stringio'
str = "aaa\nbbb\nccc"
input =  StringIO.new(str)
output = StringIO.new("", "w")
 
input.each_line do |line|
    output.puts line.upcase
end
 
print output.string
 
# % stringIO.rb     
# AAA
# BBB
# CCC
 
 | 
| © Shin Nakamura/BasicWerk 2014 |