本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。