本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。