Source code for tools.tconversion

"""Tools to convert a CSV file into another format."""
import typing
import os
import os.path as op
import glob
from definitions import dconversion


[docs] def get_all_table_paths(indir: str, ext: str = ".csv") -> typing.List[str]: """This function reads all the CSV-like files that are in a folder.""" inpaths = glob.glob(op.join(indir, "*" + ext)) assert len(inpaths) > 0, "No CSV files were found in " + str(indir) return inpaths
[docs] def convert_all_table_paths( indir: str, outformat: str, outdir: typing.Optional[str] = None, outcompression: typing.Optional[str] = None, informat: str = "csv", incompression: typing.Optional[str] = None, keep_original: bool = True, verbose: bool = True, ): """Convert all the CSV-like files in a given directory into another format and/or compression. Args: indir: input directory where the files to convert are outformat: output format outdir: output directory. If not given, it is ``indir`` outcompression: compression of the output files informat: format of the input files incompression: compression of the input files. Only use to figure out the extension keep_original: whether to keep the original files. If set to ``False``, the files are removed verbose: whether to print some information """ assert not (outformat == informat and outcompression == incompression) if outdir is None: outdir = indir inext = dconversion.get_extension(format=informat, compression=incompression) outext = dconversion.get_extension(format=outformat, compression=outcompression) inpaths = get_all_table_paths(indir, ext=inext) # Functions to read and write read = dconversion.get_io_function(action="r", format=informat) write = dconversion.get_io_function(action="w", format=outformat) os.makedirs(outdir, exist_ok=True) for inpath in inpaths: # Output path basename = op.basename(inpath) filename = basename[:-len(inext)] outpath = op.join(outdir, filename + outext) if verbose: print("Convert", inpath, "into", outpath) # read table = read(inpath) # write write(table, outpath, compression=outcompression) if not keep_original: if verbose: print("Removing original file...") os.remove(inpath)