コード例 #1
0
    def choose_sheet(self, wb):
        sheet_names = wb.sheetnames
        # default to the first sheet
        sheet = wb.worksheets[0]

        if len(sheet_names) > 1:
            print("Sheets:\n")
            i = 1
            for sheet in sheet_names:
                print(str(i) + ") " + sheet)
                i += 1

            while True:
                sheet_number = self.get_input(
                    "\nEnter the sheet number to read >>> ")
                try:
                    sheet_number -= 1
                    sheet = wb.worksheets[int(sheet_number)]
                    break
                except IndexError or KeyError or ValueError:
                    print(Err.get_error_message(102, sheet_number))
                except TypeError:
                    print(Err.get_error_message(106, "numbers"))

        return sheet
コード例 #2
0
    def call_file(self, switch, separator):
        file_name = input("Please enter the filename to read data from >>> ")
        split_filename = file_name.split(".")
        file_extension = split_filename[-1]
        if file_extension == "xls" or file_extension == "xlsx":
            try:
                wb = load_workbook(file_name)
            except FileNotFoundError:
                print(Err.get_error_message(201))
                self.call_file(switch)
            except OSError:
                print(Err.get_error_message(103))
                self.call_file(switch)

            i = Dbexel()
            data_to_save = i.create_connection(wb, switch)
            self.write_file(data_to_save)
        elif file_extension == "txt" or file_extension == "csv":
            try:
                self.split_file(file_name, switch, separator)
            except FileNotFoundError:
                print(Err.get_error_message(201))
                self.call_file(switch)
            except OSError:
                print(Err.get_error_message(103))
                self.call_file(switch)
        else:
            print(Err.get_error_message(204))
コード例 #3
0
 def write_file(self, dict_valid):  # Claye
     u = input("Are you sure you want to save data? Y/N >>> ")
     if u.upper() == "Y":
         # Rochelle
         db = input("Do you want to save to a database ot file? D/F >>> ")
         if db.upper() == "D":  # Rochelle
             self.write_to_database(dict_valid)  # Rochelle
         elif db.upper() == "F":
             file_target = input("Please input filename to save to >>> ")
             if self.check_path_exists(file_target):
                 u2 = input("File exists, do you want to append Y/N >>> ")
                 if u2.upper() == 'Y':
                     self.commit_save(dict_valid, file_target)
                 if u2.upper() == 'N':
                     self.write_file(dict_valid)
             else:
                 self.commit_save(dict_valid, file_target)
         else:
             print(Err.get_error_message(102))
             self.write_file(dict_valid)
     elif u.upper() == "N":
         print("Data Not saved")
     else:
         print(Err.get_error_message(102))
         self.write_file(dict_valid)
コード例 #4
0
    def open_file(self):
        file = None

        try:
            file = open(self.FILE_NAME)
        except FileNotFoundError or OSError:
            print(Err.get_error_message(404, self.FILE_NAME))
            sys.exit()
        except:
            print(Err.get_error_message(406, self.FILE_NAME))
            sys.exit()

        return file
コード例 #5
0
ファイル: database_excel.py プロジェクト: rmw0251/PythonAss2
    def choose_file(self):
        while True:
            file_name = input("\nPlease enter the excel file to read >>> ")

            try:
                wb = load_workbook(file_name)
                break
            except FileNotFoundError:
                print(Err.get_error_message(201))
            except OSError:
                print(Err.get_error_message(103))

        return wb
コード例 #6
0
    def _read_file(self, file_name, direction):
        file_contents = ""

        if file_name:
            try:
                file_contents = open(file_name, "r")
            except FileNotFoundError:
                print(Err.get_error_message(201))
            except OSError:
                print(Err.get_error_message(102))

            Lfh.output_file(file_contents, direction)
        else:
            print(Err.get_error_message(204))
コード例 #7
0
    def confirm(self, action_name):
        result = False
        prompt = "Are you sure you want to {}? Y/N".format(action_name)
        user_input = cv.get_input(prompt)

        try:
            if user_input[0].lower() == "y":
                result = True
        except IndexError:
            print(Err.get_error_message(102))
            self.confirm(action_name)
        except Exception as e:
            print(Err.get_error_message(104, e))

        return result
コード例 #8
0
    def load_pickle_file(self):  # Claye, Graham
        file_target = input("Please input the filename to load from >>> ")
        # self.commit_pickle_save(file_target, data_to_write)
        try:
            file = open(file_target, "rb")
        except FileNotFoundError:
            print(Err.get_error_message(201))
        except OSError:
            print(Err.get_error_message(103))

        with open(file_target) as file:
            lines = file.readlines()

        print(lines)
        return lines
コード例 #9
0
    def pie_chart(self, choice):
        chart = ChartPie()
        data_labels = []
        title = ""
        window_title = ""
        data = []

        if choice == 'gender':
            data_labels = "Female", "Male"
            title = "Gender of Staff"
            window_title = "Gender Pie Graph"
            data = [self.count_gender_f, self.count_gender_m]
        elif choice == 'sales':
            data_labels = "< 250", "250 - 499", "500 - 749", "750 - 999"
            title = "Sales Brackets of Staff"
            window_title = "Sales Brackets of Staff"
            data = [
                self.count_sales_group1, self.count_sales_group2,
                self.count_sales_group3, self.count_sales_group4
            ]
        else:
            print(Err.get_error_message(601))

        if title:
            attributes = {
                'title': title,
                'data_labels': data_labels,
                'window_title': window_title
            }
            chart.create_pie_chart(data, attributes)
コード例 #10
0
    def __init__(self):

        print("Loading...")

        sys.path.insert(0, 'G:\OneDrive\OneDrive - Ara Institute of Canterbury\Python\Ass 2 - Original Code')

        try:
            from errors import ErrorHandler as Err
        except NameError and ModuleNotFoundError and ImportError:
            print("Fatal Error - Errors.py not found.")
            sys.exit()

        try:
            from cmdline import CommandLine as Cmd
        except NameError and ModuleNotFoundError and ImportError:
            print(Err.get_error_message(404, "cmd"))
            sys.exit()

        os.system('cls')
        print(self.__doc__)

        user_args = []
        try:
            user_args = sys.argv[1:]
        except TypeError:
            pass

        Cmd().run_commandline(user_args)
コード例 #11
0
ファイル: start.py プロジェクト: rmw0251/PythonAss2
    def __init__(self):

        print("Loading...")

        try:
            from errors import ErrorHandler as Err
        except NameError and ModuleNotFoundError and ImportError:
            print("Fatal Error - Errors.py not found.")
            sys.exit()

        try:
            from cmdline import CommandLine as Cmd
        except NameError and ModuleNotFoundError and ImportError:
            print(Err.get_error_message(404, "cmd"))
            sys.exit()

        os.system('cls')
        print(self.__doc__)

        user_args = []
        try:
            user_args = sys.argv[1:]
        except TypeError:
            pass

        Cmd().run_commandline(user_args)
コード例 #12
0
    def commit_save(self, dict_valid, file_target, ids_already_in_file=[]):  # Claye and Graham
        dup_keys = 0
        rows_saved = 0
        rows = 0

        try:
            z = open(file_target, "a")
            for key in dict_valid:
                if key not in ids_already_in_file:
                    z.write("\n")
                    z.write(key + ",")
                    for value in dict_valid[key]:
                        h = str(dict_valid[key][value] + ",")
                        z.write(value + ' ' + h)

                    rows_saved += 1
                    rows += 1
                else:
                    dup_keys += 1
                    rows += 1
            z.write("\n")
            z.close()
            if dup_keys == 0:
                print("File saved, {} rows added".format(rows_saved))
            elif dup_keys == rows:
                print("All ID's already existed in the output file. Nothing added.")
            elif dup_keys > 0:
                print("{} of {} rows were duplicate keys and not inserted again".format(dup_keys, rows))
                print("{} rows were added, and the file saved".format(rows_saved))
        except OSError:
            print(Err.get_error_message(103))
            self.write_file(dict_valid)
コード例 #13
0
ファイル: cmd_view.py プロジェクト: rmw0251/PythonAss2
 def _pie(self):
     if self.user_string == 'sales' or self.user_string == 'gender':
         valid_data = self.get_data(self.user_string)
         if valid_data:
             valid_data.pie_chart(self.user_string)
     else:
         print(Err.get_error_message(102))
コード例 #14
0
 def write_file(self, dict_valid, my_controller):  # Claye
     u = self.get_input("Are you sure you want to save data? Y/N >>> ")
     if u.upper() == "Y":
         # Rochelle
         db = self.get_input("Do you want to save to a database or file?"
                             " D/F (default: F) >>> ")
         if db.upper() == "D":  # Rochelle
             self.write_to_database(self, dict_valid)  # Rochelle
         else:
             file_target = self.get_input("Please input filename to save"
                                          " to >>> ")
             if my_controller.check_path_exists(file_target):
                 u2 = self.get_input("File exists, do you want to append"
                                     " Y/N >>> ")
                 if u2.upper() == 'Y':
                     ids_already_in_file = self.remove_duplicates(
                         file_target)
                     self.commit_save(dict_valid, file_target,
                                      ids_already_in_file)
                 if u2.upper() == 'N':
                     self.write_file(self, dict_valid, my_controller)
             else:
                 self.commit_save(dict_valid, file_target)
     elif u.upper() == "N":
         print("Data Not saved")
     else:
         print(Err.get_error_message(102))
コード例 #15
0
 def _run_switch_methods(self, methods_to_run):
     for method in methods_to_run:
         try:
             method()
         except TypeError:
             pass
         except Exception as e:
             print(Err.get_error_message(901, e))
コード例 #16
0
    def open_file(self, file_name, mode='r'):
        file = ""
        try:
            file = open(file_name, mode)
        except FileNotFoundError:
            try:
                print(Err.get_error_message(403, "log"))
                print("Creating log file...")
                self._create_file(self, file_name)
            except OSError:
                print(Err.get_error_message(401, "log"))
            except:
                print(Err.get_error_message(402, "log"))
            else:
                print("log.txt file created")

        return file
コード例 #17
0
    def _default(self):

        file_contents = Lfh.load_file_data(Lfh, self.FILE_NAME)
        direction = ""
        if len(file_contents) == 0:
            print(Err.get_error_message(208))

        Lfh.output_file(file_contents, direction)
コード例 #18
0
 def check_path_exists(path):  # Claye
     try:
         if os.path.exists("{}".format(path)):
             return True
         else:
             return False
     except OSError:
         print(Err.get_error_message(103))
コード例 #19
0
ファイル: cmd_view.py プロジェクト: rmw0251/PythonAss2
 def _line(self):
     # line chart for sales and salary
     if self.user_string:
         print(Err.get_error_message(102))
     else:
         valid_data = self.get_data('line')
         if valid_data:
             valid_data.line_chart()
コード例 #20
0
ファイル: cmd_view.py プロジェクト: rmw0251/PythonAss2
 def _bar(self):
     # bar chart for birthday or bmi
     if self.user_string == 'bmi' or self.user_string == 'birthday':
         valid_data = self.get_data(self.user_string)
         if valid_data:
             # user string for checking which chart dat type
             valid_data.bar_chart(self.user_string)
     else:
         print(Err.get_error_message(102))
コード例 #21
0
    def fetch_text_file(file_name):
        file = ""

        try:
            file = open(file_name, "r")
        except FileNotFoundError:
            print(Err.get_error_message(201))

        return file
コード例 #22
0
ファイル: cmd_pickler.py プロジェクト: rmw0251/PythonAss2
    def _unpickle_errors(self):
        un_pickled_data = ""

        try:
            un_pickled_data = Pkl.unpickle_data(self.pickled_errors[0])
        except IndexError:
            print(Err.get_error_message(208))
        if self.display_detail_output:
            print("Unpickled Data: {}".format(un_pickled_data))
        return un_pickled_data
コード例 #23
0
 def load_file_data(self, file_name):
     file_contents = []
     try:
         with self.open_file(self, file_name, "r") as file:
             for line in file:
                 a_line = line.rstrip()
                 file_contents.append(a_line)
         self.close_file(file)
     except FileNotFoundError:
         try:
             print(Err.get_error_message(403, "log"))
             print("Creating log file...")
             self._create_file(self, file_name)
         except OSError:
             print(Err.get_error_message(401, "log"))
         except:
             print(Err.get_error_message(402, "log"))
         else:
             print("log.txt file created")
     return file_contents
コード例 #24
0
    def call_file(self, switch, separator=','):
        valid_dict = None
        file_name = input("Please enter the filename to read data from >>> ")
        split_filename = file_name.split(".")
        file_extension = split_filename[-1]
        wb = None
        file = None
        if file_extension == "xls" or file_extension == "xlsx":
            try:
                wb = self.file_reader.fetch_workbook_file(file_name)
            except FileNotFoundError:
                print(Err.get_error_message(201))
                self.call_file(self, switch)
            except OSError:
                print(Err.get_error_message(103))
                self.call_file(self, switch)

            if wb is not None:
                data_to_save = self.file_reader.fetch_workbook_contents(
                    wb, switch)
                FileWriter.write_file(FileWriter, data_to_save, self)
        elif file_extension == "txt" or file_extension == "csv":
            try:
                open(file_name, 'r')
            except FileNotFoundError:
                print(Err.get_error_message(201))
                self.call_file(self, switch)
            except OSError:
                print(Err.get_error_message(103))
                self.call_file(self, switch)
            else:
                file = self.file_reader.fetch_text_file(file_name)

            if file is not None:
                valid_dict = self.file_reader.fetch_text_contents(
                    file, switch, separator)
        else:
            print(Err.get_error_message(204))

        if valid_dict:
            FileWriter.write_file(FileWriter, valid_dict, self)
コード例 #25
0
ファイル: cmd_view.py プロジェクト: rmw0251/PythonAss2
    def _load_file_data(self, file_name):
        file_contents = []
        try:
            with open(file_name, "r") as file:
                for line in file:
                    a_line = line.rstrip()
                    file_contents.append(a_line)
            file.close()
        except FileNotFoundError:
            print(Err.get_error_message(403, "requested file"))

        return file_contents
コード例 #26
0
    def wipe_file(self, file_name):
        try:
            file = self.open_file(self, file_name, "r+")
            file.truncate()
            self.close_file(file)
        except PermissionError:
            print(Err.get_error_message(405, "log"))

        if self.file_is_empty(file_name):
            print("Log file wiped")
        else:
            print("Log file not wiped")
コード例 #27
0
    def split_file(self, file_name, switch, separator=","):
        dict_root = {}
        try:
            file = open(file_name, "r")
        except FileNotFoundError:
            print(Err.get_error_message(201))
        else:
            # Repeat for each line in the text file
            f = FileReader()
            dup_keys = 0
            keep_going = True

            for line in file:
                # Split file into fields using ","
                fields = line.split(separator)
                checked_id = DataProcessor.validate_key(fields[0])
                if checked_id in dict_root:
                    dup_keys += 1
                    fields[6] = fields[6].rstrip()
                    data_to_log = "Duplicate Key" + str(fields[0:])
                    LogFileHandler.append_file('log.txt', data_to_log)
                else:
                    try:
                        dict_root.update({checked_id: {'gender': fields[1],
                                                       'age': fields[2],
                                                       'sales': fields[3],
                                                       'bmi': fields[4],
                                                       'salary': fields[5],
                                                       'birthday': fields[6]
                                         .rstrip(),
                                                       'valid': '0'}})
                    except IndexError:
                        print(Err.get_error_message(211))
                        keep_going = False
            # Close the file to free up resources (good practice)
            file.close()
            if keep_going:
                valid_dict = DataProcessor.send_to_validate(dict_root,
                                                            switch, dup_keys)
                self.write_file(valid_dict)
コード例 #28
0
    def get_switch_and_data(self, user_data, my_command):
        methods_to_run = []
        strings_to_keep = []
        split_user_data = user_data.split(" ")

        for data in split_user_data:
            try:
                if data[0] == "/" and len(data) == 2:
                    switch = my_command.get_switch(data[1])
                    methods_to_run.append(switch)
                    if switch == "":
                        print(Err.get_error_message(105))
                else:
                    not_a_switch = data
                    strings_to_keep.append(not_a_switch)
            except IndexError:
                pass
            except Exception as e:
                print(Err.get_error_message(901, e))

        user_string = " ".join(strings_to_keep)
        return methods_to_run, user_string
コード例 #29
0
    def load_pickle_file(self, file_name=""):  # Claye, Graham
        file = None
        lines = ""
        if file_name == "":
            file_target = self.get_input(
                "Please input the filename to load from >>> ")
        else:
            file_target = file_name

        try:
            file = open(file_target, "rb")
        except FileNotFoundError:
            print(Err.get_error_message(201))
        except OSError:
            print(Err.get_error_message(103))

        if file:
            with open(file_target) as file:
                lines = file.readlines()

        print(lines)
        return lines
コード例 #30
0
 def commit_save(self, dict_valid, file_target):  # Claye
     try:
         z = open(file_target, "a")
         for key in dict_valid:
             z.write("\n")
             z.write(key + ",")
             for value in dict_valid[key]:
                 h = str(dict_valid[key][value] + ",")
                 z.write(value + ' ' + h)
         z.write("\n")
         z.close()
         print("File saved")
     except OSError:
         print(Err.get_error_message(103))
         self.write_file(dict_valid)