Source code for randcsv.random_csv

import csv
from operator import itemgetter

from . import value_generators as vg
from . import data_type as dt


[docs]class RandCSV: """ All of the arguments (meta data) required to initialize randcsv. """ def __init__( self, rows, cols, byte_size=8, data_types=None, nan_freq=.0, empty_freq=.0, index_col=False, title_row=False, ): if data_types is None: data_types = [dt.DataType.integer.value] self.rows = rows self.cols = cols self.data_types = data_types self.index_col = index_col self.title_row = title_row if nan_freq < .0 or nan_freq > 1.: raise ValueError("--nan-freq <nan-freq> must be [0, 1]") if empty_freq < .0 or empty_freq > 1.: raise ValueError("--empty-freq <empty-freq> must be [0, 1]") if nan_freq + empty_freq > 1.: raise ValueError("--empty-freq <empty-freq> + --nan-freq <nan-freq> must be [0, 1]") if byte_size <= 0: raise ValueError("--value-length must be positive") self.nan_freq = nan_freq self.empty_freq = empty_freq self.byte_size = byte_size regular_values = 1 - self.nan_freq - self.empty_freq all_value_types = [(0, regular_values), (1, self.nan_freq), (2, self.empty_freq)] all_value_types_sorted = sorted(all_value_types, key=itemgetter(1)) self.data = [] for row in range(self.rows): if row == 0 and self.title_row: self.data.append([str(col) for col in range(self.cols)]) else: if self.index_col: self.data.append( [str(row)] + [vg.generate_value( all_value_types_sorted, self.data_types, self.byte_size ) for _ in range(1, self.cols)]) else: self.data.append( [vg.generate_value( all_value_types_sorted, self.data_types, self.byte_size ) for _ in range(self.cols)])
[docs] def to_file(self, file_name): """Save the data to local file system. :param file_name: name of output file :return: None """ with open(file_name, 'w+', newline='') as csvfile: csvwriter = csv.writer( csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) for row in range(len(self.data)): csvwriter.writerow(self.data[row]) return None