本文简要介绍ruby语言中  CSV.open  的用法。
用法
open(file_path, mode = "rb", **options ) → new_csv
open(io, mode = "rb", **options ) → new_csv
open(file_path, mode = "rb", **options ) { |csv| ... } → object
open(io, mode = "rb", **options ) { |csv| ... } → object
可能的选项元素:
hash form:
  :invalid => nil      # raise error on invalid byte sequence (default)
  :invalid => :replace # replace invalid byte sequence
  :undef => :replace   # replace undefined conversion
  :replace => string   # replacement string ("?" or "\uFFFD" if not specified)
- 
参数
path如果给定,则必须是文件的路径。 - 
参数
io应该是一个IO对象,即:- 
开放阅读;返回时,
IO对象将被关闭。 - 
定位在开头。要定位在末尾,要追加,请使用方法
CSV.generate。对于任何其他定位,请改为传递预设的 StringIO 对象。 
 - 
 - 
参数
mode,如果给定,必须是文件模式参见 Open Mode 。 - 
参数
**options必须是关键字选项。请参阅生成选项。 - 
此方法可选择接受一个额外的
:encoding选项,您可以使用该选项指定从path或io读取的数据的Encoding。除非您的数据采用Encoding::default_external给出的编码,否则您必须提供此信息。解析将使用它来确定如何解析数据。您可以提供第二个Encoding,以便在读取数据时对其进行转码。例如,encoding: 'UTF-32BE:UTF-8'
将从文件中读取
UTF-32BE数据,但在解析之前将其转码为UTF-8。 
这些示例假定事先执行:
string = "foo,0\nbar,1\nbaz,2\n"
path = 't.csv'
File.write(path, string)
没有给出块,返回一个新的 CSV 对象。
使用文件路径创建 CSV 对象:
csv = CSV.open(path)
csv # => #<CSV io_type:File io_path:"t.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"">
使用打开的文件创建 CSV 对象:
csv = CSV.open(File.open(path))
csv # => #<CSV io_type:File io_path:"t.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"">
给定一个块,使用创建的 CSV 对象调用该块;返回块的返回值:
使用文件路径:
csv = CSV.open(path) {|csv| p csv}
csv # => #<CSV io_type:File io_path:"t.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"">
输出:
#<CSV io_type:File io_path:"t.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"">
使用打开的文件:
csv = CSV.open(File.open(path)) {|csv| p csv}
csv # => #<CSV io_type:File io_path:"t.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"">
输出:
#<CSV io_type:File io_path:"t.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"">
如果参数不是 String 对象或 IO 对象,则引发异常:
# Raises TypeError (no implicit conversion of Symbol into String)
CSV.open(:foo)
相关用法
- Ruby CSV.header_convert用法及代码示例
 - Ruby CSV.skip_lines用法及代码示例
 - Ruby CSV.table用法及代码示例
 - Ruby CSV.force_quotes?用法及代码示例
 - Ruby CSV.unconverted_fields?用法及代码示例
 - Ruby CSV.generate_line用法及代码示例
 - Ruby CSV.col_sep用法及代码示例
 - Ruby CSV.shift用法及代码示例
 - Ruby CSV.skip_blanks?用法及代码示例
 - Ruby CSV.read用法及代码示例
 - Ruby CSV.row_sep用法及代码示例
 - Ruby CSV.header_row?用法及代码示例
 - Ruby CSV.headers用法及代码示例
 - Ruby CSV.csv << row用法及代码示例
 - Ruby CSV.encoding用法及代码示例
 - Ruby CSV.each用法及代码示例
 - Ruby CSV.return_headers?用法及代码示例
 - Ruby CSV.converters用法及代码示例
 - Ruby CSV.line用法及代码示例
 - Ruby CSV.parse_line用法及代码示例
 - Ruby CSV.convert用法及代码示例
 - Ruby CSV.parse用法及代码示例
 - Ruby CSV.line_no用法及代码示例
 - Ruby CSV.instance用法及代码示例
 - Ruby CSV.liberal_parsing?用法及代码示例
 
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 CSV.open。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
