|
46 | 46 | end |
47 | 47 | end |
48 | 48 |
|
49 | | -function _save(filename, data; delim=',', quotechar='"', escapechar='\\', header=true) |
| 49 | +function _save(io, data; delim=',', quotechar='"', escapechar='\\', header=true) |
50 | 50 | isiterabletable(data) || error("Can't write this data to a CSV file.") |
51 | 51 |
|
52 | 52 | it = getiterator(data) |
53 | 53 | colnames = TableTraits.column_names(it) |
54 | 54 |
|
55 | 55 | quotechar_internal = quotechar==nothing ? Nullable{Char}() : Nullable{Char}(quotechar) |
56 | 56 |
|
57 | | - open(filename, "w") do io |
58 | | - if header |
59 | | - if isnull(quotechar_internal) |
60 | | - join(io,[string(colname) for colname in colnames],delim) |
61 | | - else |
62 | | - join(io,["$(quotechar)" *replace(string(colname), quotechar, "$(escapechar)$(quotechar)") * "$(quotechar)" for colname in colnames],delim) |
63 | | - end |
64 | | - println(io) |
| 57 | + if header |
| 58 | + if isnull(quotechar_internal) |
| 59 | + join(io,[string(colname) for colname in colnames],delim) |
| 60 | + else |
| 61 | + join(io,["$(quotechar)" *replace(string(colname), quotechar, "$(escapechar)$(quotechar)") * "$(quotechar)" for colname in colnames],delim) |
65 | 62 | end |
66 | | - _writecsv(io, it, eltype(it), delim, quotechar_internal, escapechar) |
67 | | - end |
| 63 | + println(io) |
| 64 | + end |
| 65 | + _writecsv(io, it, eltype(it), delim, quotechar_internal, escapechar) |
| 66 | +end |
| 67 | + |
| 68 | +function _save(filename::AbstractString, data; delim=',', quotechar='"', escapechar='\\', header=true) |
| 69 | + isiterabletable(data) || error("Can't write this data to a CSV file.") |
| 70 | + |
| 71 | + open(filename, "w") do io |
| 72 | + _save(io, data, delim=delim, quotechar=quotechar, escapechar=escapechar, header=header) |
| 73 | + end |
68 | 74 | end |
69 | 75 |
|
70 | 76 | function save(f::FileIO.File{FileIO.format"CSV"}, data; delim=',', quotechar='"', escapechar='\\', header=true) |
|
74 | 80 | function save(f::FileIO.File{FileIO.format"TSV"}, data; delim='\t', quotechar='"', escapechar='\\', header=true) |
75 | 81 | return _save(f.filename, data, delim=delim, quotechar=quotechar, escapechar=escapechar, header=header) |
76 | 82 | end |
| 83 | + |
| 84 | +function save(s::FileIO.Stream{FileIO.format"CSV"}, data; delim=',', quotechar='"', escapechar='\\', header=true) |
| 85 | + return _save(s.io, data, delim=delim, quotechar=quotechar, escapechar=escapechar, header=header) |
| 86 | +end |
| 87 | + |
| 88 | +function save(s::FileIO.Stream{FileIO.format"TSV"}, data; delim='\t', quotechar='"', escapechar='\\', header=true) |
| 89 | + return _save(s.io, data, delim=delim, quotechar=quotechar, escapechar=escapechar, header=header) |
| 90 | +end |
0 commit comments