10
10
import csv
11
11
12
12
import pyexcel_io .constants as constants
13
- from pyexcel_io .sheet import SheetWriter
13
+ from pyexcel_io .plugin_api . abstract_sheet import ISheetWriter
14
14
15
15
16
- class CSVSheetWriter ( SheetWriter ):
16
+ class CSVFileWriter ( ISheetWriter ):
17
17
"""
18
18
csv file writer
19
19
@@ -30,85 +30,64 @@ def __init__(
30
30
):
31
31
self ._encoding = encoding
32
32
self ._sheet_name = name
33
+ if self ._sheet_name is None or single_sheet_in_book :
34
+ self ._sheet_name = constants .DEFAULT_SHEET_NAME
33
35
self ._single_sheet_in_book = single_sheet_in_book
34
36
self .__line_terminator = constants .DEFAULT_CSV_NEWLINE
37
+ self ._keywords = keywords
35
38
if constants .KEYWORD_LINE_TERMINATOR in keywords :
36
39
self .__line_terminator = keywords .get (
37
40
constants .KEYWORD_LINE_TERMINATOR
38
41
)
39
- if single_sheet_in_book :
40
- self ._sheet_name = None
41
42
self ._sheet_index = sheet_index
42
- self .writer = None
43
43
self .file_handle = None
44
- SheetWriter .__init__ (
45
- self , filename , self ._sheet_name , self ._sheet_name , ** keywords
46
- )
47
-
48
- def write_row (self , array ):
49
- """
50
- write a row into the file
51
- """
52
- self .writer .writerow (array )
53
-
44
+ self ._native_book = filename
54
45
55
- class CSVFileWriter (CSVSheetWriter ):
56
- """ Write csv to a physical file """
46
+ self .writer = self .get_writer ()
57
47
58
- def close (self ):
59
- self .file_handle .close ()
60
-
61
- def set_sheet_name (self , name ):
62
- if name != constants .DEFAULT_SHEET_NAME :
48
+ def get_writer (self ):
49
+ if self ._sheet_name != constants .DEFAULT_SHEET_NAME :
63
50
names = self ._native_book .split ("." )
64
51
file_name = "%s%s%s%s%s.%s" % (
65
52
names [0 ],
66
53
constants .DEFAULT_MULTI_CSV_SEPARATOR ,
67
- name , # sheet name
54
+ self . _sheet_name , # sheet name
68
55
constants .DEFAULT_MULTI_CSV_SEPARATOR ,
69
56
self ._sheet_index , # sheet index
70
57
names [1 ],
71
58
)
72
59
else :
73
60
file_name = self ._native_book
61
+
74
62
self .file_handle = open (
75
63
file_name , "w" , newline = "" , encoding = self ._encoding
76
64
)
77
- self .writer = csv .writer (self .file_handle , ** self ._keywords )
65
+ return csv .writer (self .file_handle , ** self ._keywords )
66
+
67
+ def write_row (self , array ):
68
+ """
69
+ write a row into the file
70
+ """
71
+ self .writer .writerow (array )
78
72
73
+ def close (self ):
74
+ self .file_handle .close ()
79
75
80
- class CSVMemoryWriter (CSVSheetWriter ):
81
- """ Write csv to a memory stream """
82
76
83
- def __init__ (
84
- self ,
85
- filename ,
86
- name ,
87
- encoding = "utf-8" ,
88
- single_sheet_in_book = False ,
89
- sheet_index = None ,
90
- ** keywords
91
- ):
92
- CSVSheetWriter .__init__ (
93
- self ,
94
- filename ,
95
- name ,
96
- encoding = encoding ,
97
- single_sheet_in_book = single_sheet_in_book ,
98
- sheet_index = sheet_index ,
99
- ** keywords
100
- )
77
+ class CSVMemoryWriter (CSVFileWriter ):
78
+ """ Write csv to a memory stream """
101
79
102
- def set_sheet_name (self , name ):
80
+ def get_writer (self ):
103
81
self .file_handle = self ._native_book
104
- self . writer = csv .writer (self .file_handle , ** self ._keywords )
82
+ writer = csv .writer (self .file_handle , ** self ._keywords )
105
83
if not self ._single_sheet_in_book :
106
- self . writer .writerow (
84
+ writer .writerow (
107
85
[
108
86
constants .DEFAULT_CSV_STREAM_FILE_FORMATTER
109
87
% (self ._sheet_name , "" )
110
88
]
111
89
)
90
+ return writer
112
91
113
92
def close (self ):
114
93
if self ._single_sheet_in_book :
0 commit comments