def write(self, data, params=None): if not isinstance(data, str): if not params: params = {'delimiter': ','} else: assert isinstance(params, dict) and 'delimiter' in params if params: for param in params: if not isinstance(data, str) and param == 'delimiter': continue self._logger.warning( param + " will be omitted since it is not useful as an input argument in this function." ) self.sys_log( param + " will be omitted since it is not useful as an input argument in this function." ) while self._reader_status != Status.IDLE: self.sys_log("Waiting for reader to finish.") time.sleep(TimeSleepObj.ONE_SECOND) self._writer_status = Status.RUNNING if not isinstance(data, str): self.sys_log( "Data is not str instance, joining them with preset delimiter." ) data_to_write = params['delimiter'].join( [str(val) for val in data]) else: data_to_write = data try: if self._config['write_rule_type'] == WriteRuleType.WRITE_FROM_END: with FileLockTool(self._file_name, read_mode=False): with open( FileUtil.create_file_if_not_exist( file_name=self._file_name), 'a') as outfile: outfile.write(data_to_write + '\n') else: with FileLockTool(self._file_name, read_mode=False): with open( FileUtil.create_file_if_not_exist( file_name=self._file_name), 'r+') as outfile: file_data = outfile.read() outfile.seek(0, 0) outfile.write(data_to_write + '\n' + file_data) self._writer_status = Status.IDLE except Exception as err: self.sys_log("Write to file [" + self._file_name + "] got exception: " + str(err) + '.') self._logger.error("Write to file [" + self._file_name + "] got exception: " + str(err) + '.') raise StorageWriteException("Write to file [" + self._file_name + "] got exception: " + str(err) + '.')
def initialize_from_file(self, file_name): if '.pb' not in file_name: self.sys_log("Please use .pb extension for proto files.") self._file_name = FileUtil.create_file_if_not_exist(file_name=file_name) if FileUtil.is_file_empty(file_name=self._file_name): self._table_message = ProtoTable() else: with FileLockTool(self._file_name, read_mode=True): self._table_message = FileUtil.read_proto_from_file( proto_type=ProtoTable, file_name=self._file_name ) if not self._table_message.table_path: self._table_message.table_path = self._file_name if not self._table_message.table_name: self._table_message.table_name = FileUtil.base_name(file_name=file_name) if not self._table_message.created_time: self._table_message.created_time = str(TimezoneUtil.cur_time_in_pst())
def initialize_from_file(self, file_name): self.sys_log("Initialize from file " + file_name + '.') self._logger.info("Initialize from file " + file_name + '.') self._file_name = FileUtil.create_file_if_not_exist( file_name=file_name) self._last_read_line = 0