44
55 The io interface to file extensions
66
7- :copyright: (c) 2014-2017 by Onni Software Ltd.
7+ :copyright: (c) 2014-2019 by Onni Software Ltd.
88 :license: New BSD License, see LICENSE for more details
99"""
1010import os
@@ -24,7 +24,7 @@ def iget_data(afile, file_type=None, **keywords):
2424 :param sheet_name: the name of the sheet to be loaded
2525 :param sheet_index: the index of the sheet to be loaded
2626 :param sheets: a list of sheet to be loaded
27- :param file_type: used only when filename is not a physial file name
27+ :param file_type: used only when filename is not a physical file name
2828 :param force_file_type: used only when filename refers to a physical file
2929 and it is intended to open it as forced file type.
3030 :param streaming: toggles the type of returned data. The values of the
@@ -99,6 +99,8 @@ def save_data(afile, data, file_type=None, **keywords):
9999 :param filename: actual file name, a file stream or actual content
100100 :param data: a dictionary but an ordered dictionary is preferred
101101 :param file_type: used only when filename is not a physial file name
102+ :param force_file_type: used only when filename refers to a physical file
103+ and it is intended to open it as forced file type.
102104 :param library: explicitly name a library for use.
103105 e.g. library='pyexcel-ods'
104106 :param keywords: any other parameters that python csv module's
@@ -201,7 +203,8 @@ def load_data(
201203
202204
203205def get_writer (
204- file_name = None , file_stream = None , file_type = None , library = None , ** keywords
206+ file_name = None , file_stream = None , file_type = None ,
207+ library = None , force_file_type = None , ** keywords
205208):
206209 """find a suitable writer"""
207210 inputs = [file_name , file_stream ]
@@ -211,11 +214,15 @@ def get_writer(
211214 raise IOError (constants .MESSAGE_ERROR_02 )
212215
213216 file_type_given = True
217+
214218 if file_type is None and file_name :
215- try :
216- file_type = file_name .split ("." )[- 1 ]
217- except AttributeError :
218- raise Exception ("file_name should be a string type" )
219+ if force_file_type :
220+ file_type = force_file_type
221+ else :
222+ try :
223+ file_type = file_name .split ("." )[- 1 ]
224+ except AttributeError :
225+ raise Exception ("file_name should be a string type" )
219226
220227 file_type_given = False
221228
0 commit comments