def execute(self, *args): files = super().get_target_files(self._src_dir, self._src_pattern) if len(files) != 1: raise Exception("Input file must be only one.") self._logger.info("Files found %s" % files) # essential parameters check valid = EssentialParameters( self.__class__.__name__, [ self._before_format, self._before_enc, self._after_format, self._after_enc, self._dest_dir, self._dest_pattern, ], ) valid() if self._dest_pattern: self._logger.warning( "'dest_pattern' will be unavailable in the near future." + "Basically every classes which extends FileBaseTransform will be allowed" + " plural input files, and output files will be the same name with input" + " file names.\n" "At that time, if 'dest_dir' is given, transformed files will be created in the given directory.\n" # noqa + "If not, original files will be updated by transformed files." ) with open(files[0], mode="rt", encoding=self._before_enc) as i: reader = csv.reader(i, delimiter=Csv.delimiter_convert(self._before_format)) with open( os.path.join(self._dest_dir, self._dest_pattern), mode="wt", newline="", encoding=self._after_enc, ) as o: writer = csv.writer( o, delimiter=Csv.delimiter_convert(self._after_format), quoting=Csv.quote_convert(self._quote), lineterminator=Csv.newline_convert(self._after_nl), ) for line in reader: writer.writerow(line)
def execute(self, *args): # essential parameters check valid = EssentialParameters( self.__class__.__name__, [ self._before_format, self._before_enc, ], ) valid() files = super().get_target_files(self._src_dir, self._src_pattern) if self._after_format is None: self._after_format = self._before_format if self._after_enc is None: self._after_enc = self._before_enc for file in files: new_file = self._new_file(file) with open(file, mode="rt", encoding=self._before_enc) as i: reader = csv.reader( i, delimiter=Csv.delimiter_convert(self._before_format) ) with open( new_file, mode="wt", newline="", encoding=self._after_enc ) as o: writer = csv.writer( o, delimiter=Csv.delimiter_convert(self._after_format), quoting=Csv.quote_convert(self._quote), lineterminator=Csv.newline_convert(self._after_nl), ) for i, line in enumerate(reader): if i == 0: writer.writerow(self._replace_headers(line)) else: writer.writerow(line) os.remove(file) os.rename(new_file, new_file[:-5])