my_project.fileManager
1import pandas as pd 2 3class FileManager(): 4 """ 5 A simple file manager. 6 7 Parameters 8 ---------- 9 format_ : str, optional 10 Initial format of the files its managing 11 12 Attributes 13 ---------- 14 format : str | None 15 Format of the files its managing 16 17 Examples 18 -------- 19 >>> fm = FileManager() 20 >>> fm.set_format("parquet") 21 >>> df = fm.read("parquet_data") 22 23 >>> fm = FileManager("csv") 24 >>> df = fm.read("csv_data") 25 """ 26 27 formats = { 28 'csv': {'write': lambda df, f: df.to_csv(f, index=False), 'read': pd.read_csv, 'ext': '.csv'}, 29 'parquet': {'write': lambda df, f: df.to_parquet(f), 'read': pd.read_parquet, 'ext': '.parquet'}, 30 'feather': {'write': lambda df, f: df.to_feather(f), 'read': pd.read_feather, 'ext': '.feather'}, 31 'pickle': {'write': lambda df, f: df.to_pickle(f), 'read': pd.read_pickle, 'ext': '.pkl'} 32 } 33 34 def __init__(self,*, format_: str | None = None): 35 self.format = None 36 if format_ is not None: 37 self.set_format(format_) 38 39 @staticmethod 40 def avalible_formats() -> list[str]: 41 """ 42 Static method. Obtains the supported file formats. 43 44 Returns 45 ------- 46 list[str] 47 List of strings, each a supported format 48 49 Examples 50 -------- 51 >>> formats = FileManager.avalible_formats() 52 """ 53 54 return list(FileManager.formats.keys()) 55 56 @staticmethod 57 def is_format(format_: str) -> bool: 58 """ 59 Static method. Checks if a file format is supported. 60 61 Parameters 62 ---------- 63 format_ : str 64 File format to check 65 66 Returns 67 ------- 68 bool 69 True if it is supported 70 71 Examples 72 -------- 73 >>> csv_supported = FileManager.is_format("csv") 74 """ 75 76 return (format_ in FileManager.formats.keys()) 77 78 def set_format(self, format_: str) -> None: 79 """ 80 Sets the file format of the files to manage. 81 82 Parameters 83 ---------- 84 format_ : str 85 File format to use 86 87 Examples 88 -------- 89 >>> fm.set_format("csv") 90 91 Raises 92 ------ 93 Exception 94 If the format is not supported 95 """ 96 97 if not self.is_format(format_): 98 raise f"{format_} format not supported. Avalible formats: {self.avalible_formats()}" 99 self.format = format_ 100 101 def _get_name(self, input_filename: str) -> str: 102 """ 103 Adds the apropiate extension to the filename. 104 105 Parameters 106 ---------- 107 input_filename : str 108 Filename without extension 109 110 Returns 111 ------- 112 str 113 Filename with the extension of the current format 114 115 Examples 116 -------- 117 >>> fm.set_format("csv") 118 >>> csv_filename = fm._get_name("name") 119 """ 120 121 filename = f'{input_filename}{self.formats[self.format]["ext"]}' 122 return filename 123 124 def read(self, input_filename: str) -> pd.DataFrame: 125 """ 126 Reads from the selected file. 127 128 Parameters 129 ---------- 130 input_filename : str 131 Filename without extension 132 133 Returns 134 ------- 135 pd.DataFrame 136 Dataframe with the content read from the selected file 137 138 Examples 139 -------- 140 >>> fm.set_format("csv") 141 >>> df = fm.read("csv_file") 142 """ 143 144 filename = self._get_name(input_filename) 145 return self.formats[self.format]["read"](filename) 146 147 def write(self, df: pd.DataFrame, input_filename: str) -> str | None: 148 """ 149 Writes to the selected file. 150 151 Parameters 152 ---------- 153 df : pd.DataFrame 154 Dataframe containg the content to write 155 input_filename : str 156 Filename without extension 157 158 Returns 159 ------- 160 str | None 161 Passes the return of the apropiate write call 162 163 Examples 164 -------- 165 >>> fm.set_format("csv") 166 >>> fm.write(df, "csv_file") 167 """ 168 169 filename = self._get_name(input_filename) 170 return self.formats[self.format]["write"](df, filename)
class
FileManager:
4class FileManager(): 5 """ 6 A simple file manager. 7 8 Parameters 9 ---------- 10 format_ : str, optional 11 Initial format of the files its managing 12 13 Attributes 14 ---------- 15 format : str | None 16 Format of the files its managing 17 18 Examples 19 -------- 20 >>> fm = FileManager() 21 >>> fm.set_format("parquet") 22 >>> df = fm.read("parquet_data") 23 24 >>> fm = FileManager("csv") 25 >>> df = fm.read("csv_data") 26 """ 27 28 formats = { 29 'csv': {'write': lambda df, f: df.to_csv(f, index=False), 'read': pd.read_csv, 'ext': '.csv'}, 30 'parquet': {'write': lambda df, f: df.to_parquet(f), 'read': pd.read_parquet, 'ext': '.parquet'}, 31 'feather': {'write': lambda df, f: df.to_feather(f), 'read': pd.read_feather, 'ext': '.feather'}, 32 'pickle': {'write': lambda df, f: df.to_pickle(f), 'read': pd.read_pickle, 'ext': '.pkl'} 33 } 34 35 def __init__(self,*, format_: str | None = None): 36 self.format = None 37 if format_ is not None: 38 self.set_format(format_) 39 40 @staticmethod 41 def avalible_formats() -> list[str]: 42 """ 43 Static method. Obtains the supported file formats. 44 45 Returns 46 ------- 47 list[str] 48 List of strings, each a supported format 49 50 Examples 51 -------- 52 >>> formats = FileManager.avalible_formats() 53 """ 54 55 return list(FileManager.formats.keys()) 56 57 @staticmethod 58 def is_format(format_: str) -> bool: 59 """ 60 Static method. Checks if a file format is supported. 61 62 Parameters 63 ---------- 64 format_ : str 65 File format to check 66 67 Returns 68 ------- 69 bool 70 True if it is supported 71 72 Examples 73 -------- 74 >>> csv_supported = FileManager.is_format("csv") 75 """ 76 77 return (format_ in FileManager.formats.keys()) 78 79 def set_format(self, format_: str) -> None: 80 """ 81 Sets the file format of the files to manage. 82 83 Parameters 84 ---------- 85 format_ : str 86 File format to use 87 88 Examples 89 -------- 90 >>> fm.set_format("csv") 91 92 Raises 93 ------ 94 Exception 95 If the format is not supported 96 """ 97 98 if not self.is_format(format_): 99 raise f"{format_} format not supported. Avalible formats: {self.avalible_formats()}" 100 self.format = format_ 101 102 def _get_name(self, input_filename: str) -> str: 103 """ 104 Adds the apropiate extension to the filename. 105 106 Parameters 107 ---------- 108 input_filename : str 109 Filename without extension 110 111 Returns 112 ------- 113 str 114 Filename with the extension of the current format 115 116 Examples 117 -------- 118 >>> fm.set_format("csv") 119 >>> csv_filename = fm._get_name("name") 120 """ 121 122 filename = f'{input_filename}{self.formats[self.format]["ext"]}' 123 return filename 124 125 def read(self, input_filename: str) -> pd.DataFrame: 126 """ 127 Reads from the selected file. 128 129 Parameters 130 ---------- 131 input_filename : str 132 Filename without extension 133 134 Returns 135 ------- 136 pd.DataFrame 137 Dataframe with the content read from the selected file 138 139 Examples 140 -------- 141 >>> fm.set_format("csv") 142 >>> df = fm.read("csv_file") 143 """ 144 145 filename = self._get_name(input_filename) 146 return self.formats[self.format]["read"](filename) 147 148 def write(self, df: pd.DataFrame, input_filename: str) -> str | None: 149 """ 150 Writes to the selected file. 151 152 Parameters 153 ---------- 154 df : pd.DataFrame 155 Dataframe containg the content to write 156 input_filename : str 157 Filename without extension 158 159 Returns 160 ------- 161 str | None 162 Passes the return of the apropiate write call 163 164 Examples 165 -------- 166 >>> fm.set_format("csv") 167 >>> fm.write(df, "csv_file") 168 """ 169 170 filename = self._get_name(input_filename) 171 return self.formats[self.format]["write"](df, filename)
A simple file manager.
Parameters
- format_ (str, optional): Initial format of the files its managing
Attributes
- format (str | None): Format of the files its managing
Examples
>>> fm = FileManager()
>>> fm.set_format("parquet")
>>> df = fm.read("parquet_data")
>>> fm = FileManager("csv")
>>> df = fm.read("csv_data")
formats =
{'csv': {'write': <function FileManager.<lambda>>, 'read': <function read_csv>, 'ext': '.csv'}, 'parquet': {'write': <function FileManager.<lambda>>, 'read': <function read_parquet>, 'ext': '.parquet'}, 'feather': {'write': <function FileManager.<lambda>>, 'read': <function read_feather>, 'ext': '.feather'}, 'pickle': {'write': <function FileManager.<lambda>>, 'read': <function read_pickle>, 'ext': '.pkl'}}
@staticmethod
def
avalible_formats() -> list[str]:
40 @staticmethod 41 def avalible_formats() -> list[str]: 42 """ 43 Static method. Obtains the supported file formats. 44 45 Returns 46 ------- 47 list[str] 48 List of strings, each a supported format 49 50 Examples 51 -------- 52 >>> formats = FileManager.avalible_formats() 53 """ 54 55 return list(FileManager.formats.keys())
Static method. Obtains the supported file formats.
Returns
- list[str]: List of strings, each a supported format
Examples
>>> formats = FileManager.avalible_formats()
@staticmethod
def
is_format(format_: str) -> bool:
57 @staticmethod 58 def is_format(format_: str) -> bool: 59 """ 60 Static method. Checks if a file format is supported. 61 62 Parameters 63 ---------- 64 format_ : str 65 File format to check 66 67 Returns 68 ------- 69 bool 70 True if it is supported 71 72 Examples 73 -------- 74 >>> csv_supported = FileManager.is_format("csv") 75 """ 76 77 return (format_ in FileManager.formats.keys())
Static method. Checks if a file format is supported.
Parameters
- format_ (str): File format to check
Returns
- bool: True if it is supported
Examples
>>> csv_supported = FileManager.is_format("csv")
def
set_format(self, format_: str) -> None:
79 def set_format(self, format_: str) -> None: 80 """ 81 Sets the file format of the files to manage. 82 83 Parameters 84 ---------- 85 format_ : str 86 File format to use 87 88 Examples 89 -------- 90 >>> fm.set_format("csv") 91 92 Raises 93 ------ 94 Exception 95 If the format is not supported 96 """ 97 98 if not self.is_format(format_): 99 raise f"{format_} format not supported. Avalible formats: {self.avalible_formats()}" 100 self.format = format_
Sets the file format of the files to manage.
Parameters
- format_ (str): File format to use
Examples
>>> fm.set_format("csv")
Raises
- Exception: If the format is not supported
def
read(self, input_filename: str) -> pandas.core.frame.DataFrame:
125 def read(self, input_filename: str) -> pd.DataFrame: 126 """ 127 Reads from the selected file. 128 129 Parameters 130 ---------- 131 input_filename : str 132 Filename without extension 133 134 Returns 135 ------- 136 pd.DataFrame 137 Dataframe with the content read from the selected file 138 139 Examples 140 -------- 141 >>> fm.set_format("csv") 142 >>> df = fm.read("csv_file") 143 """ 144 145 filename = self._get_name(input_filename) 146 return self.formats[self.format]["read"](filename)
Reads from the selected file.
Parameters
- input_filename (str): Filename without extension
Returns
- pd.DataFrame: Dataframe with the content read from the selected file
Examples
>>> fm.set_format("csv")
>>> df = fm.read("csv_file")
def
write(self, df: pandas.core.frame.DataFrame, input_filename: str) -> str | None:
148 def write(self, df: pd.DataFrame, input_filename: str) -> str | None: 149 """ 150 Writes to the selected file. 151 152 Parameters 153 ---------- 154 df : pd.DataFrame 155 Dataframe containg the content to write 156 input_filename : str 157 Filename without extension 158 159 Returns 160 ------- 161 str | None 162 Passes the return of the apropiate write call 163 164 Examples 165 -------- 166 >>> fm.set_format("csv") 167 >>> fm.write(df, "csv_file") 168 """ 169 170 filename = self._get_name(input_filename) 171 return self.formats[self.format]["write"](df, filename)
Writes to the selected file.
Parameters
- df (pd.DataFrame): Dataframe containg the content to write
- input_filename (str): Filename without extension
Returns
- str | None: Passes the return of the apropiate write call
Examples
>>> fm.set_format("csv")
>>> fm.write(df, "csv_file")