Module game_qu.base.file_reader

Expand source code
import os

class FileReader:
    """ Reads the contents of a file. The contents of the file must follow this format in order to be read: name:value.
        For instance, 'high_score:219.0' The value types allowed are int, float, str, bool, float[], and str[]. Generally
        it would be recommended to use python's built-in json package, but this is also an option for simple file saving and retrieving

        int-format: name:int (high_score:219)
        float_format: name:float (high_score:219.0)
        str-format: name:str (name:a)
        bool_format: name:bool (has_won_game:True)
        float[]-format: name:[val1,val2,val3] (high_scores:[1.0,2.0,3.0])
        str[]-format: name:[val1,val2,val3] (names:[a,b,c,d])"""

    name_to_data = {}

    def __init__(self, file_path):
        """ Initialize the class by reading the file from the 'file_path' and storing the data in 'self.name_to_object'.

            Args:
                file_path (str): the path to the file
     
            Returns:
                None"""

        lines = self.get_lines(file_path)

        for line in lines:
            delimiter_start = line.index(":")

            name = line[:delimiter_start]

            data = line[delimiter_start + 1:]

            self.name_to_data[name] = data

    def get_lines(self, file_path, new_line_delimiter="\n"):
        """ Opens the file that was gotten from open(file_path) and uses 'new_line_delimeter' to determine what is a new line

            Args:
                file_path (str): the path to the file
                new_line_delimiter (str): the delimiter that decides if a new entry in the return_value (lines) should be created
     
            Returns:
                list[str] all the lines of the file"""

        file = open(file_path, "r+")
        lines = file.read().split(new_line_delimiter)
        file.close()
        return lines

    def get_int(self, name):
        """ Retrieves the integer value from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                int: the int value associated with the key 'name'"""

        return int(self.name_to_data[name])

    def get_float(self, name):
        """ Retrieves the float value from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                float: the float value associated with the key 'name'"""

        return float(self.name_to_data[name])

    def get_bool(self, name):
        """ Retrieves the bool value from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                bool: the bool value associated with the key 'name'"""

        return self.name_to_data[name] == "True"

    def get_string_list(self, name):
        """ Retrieves the string list from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                list[str]: the list[str] value associated with the key 'name'"""

        return self.name_to_data[name][1:-1].split(",")

    def get_float_list(self, name):
        """ Retrieves the float list from 'self.name_to_data' associated with the key 'name' (calls get_string_list())

            Args:
                name (str): the name of the key
     
            Returns:
                list[float]: the list[float] value associated with the key 'name'"""

        string_list = self.get_string_list(name)
        float_list = []

        for item in string_list:
            float_list.append(float(item))

        return float_list

    def get_string(self, name):
        """ Retrieves the string from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                str: the str value associated with the key 'name'"""

        return self.name_to_data[name]

Classes

class FileReader (file_path)

Reads the contents of a file. The contents of the file must follow this format in order to be read: name:value. For instance, 'high_score:219.0' The value types allowed are int, float, str, bool, float[], and str[]. Generally it would be recommended to use python's built-in json package, but this is also an option for simple file saving and retrieving

int-format: name:int (high_score:219) float_format: name:float (high_score:219.0) str-format: name:str (name:a) bool_format: name:bool (has_won_game:True) float[]-format: name:[val1,val2,val3] (high_scores:[1.0,2.0,3.0]) str[]-format: name:[val1,val2,val3] (names:[a,b,c,d])

Initialize the class by reading the file from the 'file_path' and storing the data in 'self.name_to_object'.

Args

file_path : str
the path to the file

Returns

None

Expand source code
class FileReader:
    """ Reads the contents of a file. The contents of the file must follow this format in order to be read: name:value.
        For instance, 'high_score:219.0' The value types allowed are int, float, str, bool, float[], and str[]. Generally
        it would be recommended to use python's built-in json package, but this is also an option for simple file saving and retrieving

        int-format: name:int (high_score:219)
        float_format: name:float (high_score:219.0)
        str-format: name:str (name:a)
        bool_format: name:bool (has_won_game:True)
        float[]-format: name:[val1,val2,val3] (high_scores:[1.0,2.0,3.0])
        str[]-format: name:[val1,val2,val3] (names:[a,b,c,d])"""

    name_to_data = {}

    def __init__(self, file_path):
        """ Initialize the class by reading the file from the 'file_path' and storing the data in 'self.name_to_object'.

            Args:
                file_path (str): the path to the file
     
            Returns:
                None"""

        lines = self.get_lines(file_path)

        for line in lines:
            delimiter_start = line.index(":")

            name = line[:delimiter_start]

            data = line[delimiter_start + 1:]

            self.name_to_data[name] = data

    def get_lines(self, file_path, new_line_delimiter="\n"):
        """ Opens the file that was gotten from open(file_path) and uses 'new_line_delimeter' to determine what is a new line

            Args:
                file_path (str): the path to the file
                new_line_delimiter (str): the delimiter that decides if a new entry in the return_value (lines) should be created
     
            Returns:
                list[str] all the lines of the file"""

        file = open(file_path, "r+")
        lines = file.read().split(new_line_delimiter)
        file.close()
        return lines

    def get_int(self, name):
        """ Retrieves the integer value from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                int: the int value associated with the key 'name'"""

        return int(self.name_to_data[name])

    def get_float(self, name):
        """ Retrieves the float value from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                float: the float value associated with the key 'name'"""

        return float(self.name_to_data[name])

    def get_bool(self, name):
        """ Retrieves the bool value from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                bool: the bool value associated with the key 'name'"""

        return self.name_to_data[name] == "True"

    def get_string_list(self, name):
        """ Retrieves the string list from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                list[str]: the list[str] value associated with the key 'name'"""

        return self.name_to_data[name][1:-1].split(",")

    def get_float_list(self, name):
        """ Retrieves the float list from 'self.name_to_data' associated with the key 'name' (calls get_string_list())

            Args:
                name (str): the name of the key
     
            Returns:
                list[float]: the list[float] value associated with the key 'name'"""

        string_list = self.get_string_list(name)
        float_list = []

        for item in string_list:
            float_list.append(float(item))

        return float_list

    def get_string(self, name):
        """ Retrieves the string from 'self.name_to_data' associated with the key 'name'

            Args:
                name (str): the name of the key
     
            Returns:
                str: the str value associated with the key 'name'"""

        return self.name_to_data[name]

Class variables

var name_to_data

Methods

def get_bool(self, name)

Retrieves the bool value from 'self.name_to_data' associated with the key 'name'

Args

name : str
the name of the key

Returns

bool
the bool value associated with the key 'name'
Expand source code
def get_bool(self, name):
    """ Retrieves the bool value from 'self.name_to_data' associated with the key 'name'

        Args:
            name (str): the name of the key
 
        Returns:
            bool: the bool value associated with the key 'name'"""

    return self.name_to_data[name] == "True"
def get_float(self, name)

Retrieves the float value from 'self.name_to_data' associated with the key 'name'

Args

name : str
the name of the key

Returns

float
the float value associated with the key 'name'
Expand source code
def get_float(self, name):
    """ Retrieves the float value from 'self.name_to_data' associated with the key 'name'

        Args:
            name (str): the name of the key
 
        Returns:
            float: the float value associated with the key 'name'"""

    return float(self.name_to_data[name])
def get_float_list(self, name)

Retrieves the float list from 'self.name_to_data' associated with the key 'name' (calls get_string_list())

Args

name : str
the name of the key

Returns

list[float]
the list[float] value associated with the key 'name'
Expand source code
def get_float_list(self, name):
    """ Retrieves the float list from 'self.name_to_data' associated with the key 'name' (calls get_string_list())

        Args:
            name (str): the name of the key
 
        Returns:
            list[float]: the list[float] value associated with the key 'name'"""

    string_list = self.get_string_list(name)
    float_list = []

    for item in string_list:
        float_list.append(float(item))

    return float_list
def get_int(self, name)

Retrieves the integer value from 'self.name_to_data' associated with the key 'name'

Args

name : str
the name of the key

Returns

int
the int value associated with the key 'name'
Expand source code
def get_int(self, name):
    """ Retrieves the integer value from 'self.name_to_data' associated with the key 'name'

        Args:
            name (str): the name of the key
 
        Returns:
            int: the int value associated with the key 'name'"""

    return int(self.name_to_data[name])
def get_lines(self, file_path, new_line_delimiter='\n')

Opens the file that was gotten from open(file_path) and uses 'new_line_delimeter' to determine what is a new line

Args

file_path : str
the path to the file
new_line_delimiter : str
the delimiter that decides if a new entry in the return_value (lines) should be created

Returns

list[str] all the lines of the file

Expand source code
def get_lines(self, file_path, new_line_delimiter="\n"):
    """ Opens the file that was gotten from open(file_path) and uses 'new_line_delimeter' to determine what is a new line

        Args:
            file_path (str): the path to the file
            new_line_delimiter (str): the delimiter that decides if a new entry in the return_value (lines) should be created
 
        Returns:
            list[str] all the lines of the file"""

    file = open(file_path, "r+")
    lines = file.read().split(new_line_delimiter)
    file.close()
    return lines
def get_string(self, name)

Retrieves the string from 'self.name_to_data' associated with the key 'name'

Args

name : str
the name of the key

Returns

str
the str value associated with the key 'name'
Expand source code
def get_string(self, name):
    """ Retrieves the string from 'self.name_to_data' associated with the key 'name'

        Args:
            name (str): the name of the key
 
        Returns:
            str: the str value associated with the key 'name'"""

    return self.name_to_data[name]
def get_string_list(self, name)

Retrieves the string list from 'self.name_to_data' associated with the key 'name'

Args

name : str
the name of the key

Returns

list[str]
the list[str] value associated with the key 'name'
Expand source code
def get_string_list(self, name):
    """ Retrieves the string list from 'self.name_to_data' associated with the key 'name'

        Args:
            name (str): the name of the key
 
        Returns:
            list[str]: the list[str] value associated with the key 'name'"""

    return self.name_to_data[name][1:-1].split(",")