Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
203 changes: 203 additions & 0 deletions assignment2/assignment2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
# Task 2: Read a CSV File

from asyncio import Task
import csv
import traceback
import os
import custom_module
from datetime import datetime

def read_employees():
employee_dict = {}
rows = []

try:
with open("../csv/employees.csv", "r") as file:
reader = csv.reader(file) # reader lets me loop through each row of the CSV file

for index, row in enumerate(reader):
if index == 0:
employee_dict["fields"] = row
else:
rows.append(row)

employee_dict["rows"] = rows

return employee_dict

except Exception as e:
trace_back = traceback.extract_tb(e.__traceback__)
stack_trace = []

for trace in trace_back:
stack_trace.append(
f"File : {trace[0]} , Line : {trace[1]}, Func.Name : {trace[2]}, Message : {trace[3]}"
)
print("An exception occurred.")
print(f"Exception type: {type(e).__name__}")

message = str(e)
if message:
print(f"Exception message: {message}")

print(f"Stack trace: {stack_trace}")

raise

employees = read_employees()
print(employees)

# Task 3: Find the Column Index

employees = read_employees()
print(employees)

def column_index(column_name):
return employees["fields"].index(column_name)

employee_id_column = column_index("employee_id")

# Task 4: Find the Employee First Name

def first_name(row_number):
first_name_column = column_index("first_name")
return employees["rows"][row_number][first_name_column]

# Task 5: Find the Employee: a Function in a Function

def employee_find(employee_id):

def employee_match(row):
return int(row[employee_id_column]) == employee_id
matches = list(filter(employee_match, employees["rows"]))
return matches

# Task 6: Find the Employee with a Lambda

def employee_find_2(employee_id):
matches = list(
filter(
lambda row: int(row[employee_id_column]) == employee_id,
employees["rows"]
)
)
return matches

# Task 7: Sort by Last Name

def sort_by_last_name():
last_name_column = column_index("last_name")
employees["rows"].sort(key=lambda row: row[last_name_column])
return employees["rows"]

sort_by_last_name()
print(employees)

# Task 8: Create a dict for an Employee

def employee_dict(row):
employee = {}

for index, field in enumerate(employees["fields"]):
if field != "employee_id":
employee[field] = row[index]
return employee

# Task 9: A dict of dicts, for All Employees

def all_employees_dict():
all_employees = {}

for row in employees["rows"]:
employee_id = row[employee_id_column]
all_employees[employee_id] = employee_dict(row)

return all_employees

# Task 10:

def get_this_value():
return os.getenv("THISVALUE")

def set_that_secret(new_secret):
custom_module.set_secret(new_secret)

# Task 12:

def read_csv_file(filename):
data = {}
rows = []

with open(filename, "r") as file:
reader = csv.reader(file)

for index, row in enumerate(reader):
if index == 0:
data["fields"] = row
else:
rows.append(tuple(row))

data["rows"] = rows
return data

def read_minutes():
minutes1 = read_csv_file("../csv/minutes1.csv")
minutes2 = read_csv_file("../csv/minutes2.csv")
return minutes1, minutes2


minutes1, minutes2 = read_minutes()

print(minutes1)
print(minutes2)

# Task 13:

def create_minutes_set():
set1 = set(minutes1["rows"])
set2 = set(minutes2["rows"])

return set1.union(set2)

minutes_set = create_minutes_set()

# Task 14:

def create_minutes_list():
minutes_list = list(minutes_set)

minutes_list = list(
map(
lambda x: (x[0], datetime.strptime(x[1], "%B %d, %Y")),
minutes_list,
)
)

return minutes_list

minutes_list = create_minutes_list()
print(minutes_list)

# Task 15:

def write_sorted_list():
minutes_list.sort(key=lambda x: x[1])

converted_list = list(
map(
lambda x: (x[0], datetime.strftime(x[1], "%B %d, %Y")),
minutes_list,
)
)

with open("./minutes.csv", "w", newline="") as file:
writer = csv.writer(file)

writer.writerow(minutes1["fields"])
writer.writerows(converted_list)

return converted_list

write_sorted_list()


7 changes: 7 additions & 0 deletions assignment2/custom_module.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Task 11:

secret = "shazam"

def set_secret(new_secret):
global secret
secret = new_secret
29 changes: 29 additions & 0 deletions assignment2/diary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Task 1: Diary

import traceback
try:
with open("diary.txt", "a") as file:
entry = input("What happened today?")

while entry != "done for now":
file.write(entry + "\n")
entry = input("What else?")

file.write(entry + "\n")

except Exception as e:
trace_back = traceback.extract_tb(e.__traceback__)
stack_trace = []

for trace in trace_back:
stack_trace.append(
f"File : {trace[0]} , Line : {trace[1]}, Func.Name : {trace[2]}, Message : {trace[3]}"
)
print("An exception occurred.")
print(f"Exception type: {type(e).__name__}")

message = str(e)
if message:
print(f"Exception message: {message}")

print(f"Stack trace: {stack_trace}")
8 changes: 8 additions & 0 deletions assignment2/diary.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Learned python file handling
Worked on assignment 2
done for now
I took a small nap
I also went to some garage sales and antigue shops
Now I'm working on this and ripping my hair out
Done for now
done for now
94 changes: 47 additions & 47 deletions assignment2/minutes.csv
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
Name,Date
Jason Tucker,"September 20, 1980"
Austin Hester,"March 8, 1981"
Daniel Jackson,"October 2, 1981"
Mrs. Samantha Johnson,"December 17, 1981"
Joseph Harris,"March 3, 1982"
Mrs. Samantha Johnson,"March 12, 1982"
Gina Maldonado,"December 16, 1982"
Mrs. Samantha Johnson,"December 23, 1982"
Yesenia Smith,"August 10, 1983"
Lori Martin,"February 5, 1984"
Jonathan Parrish,"June 12, 1984"
Mrs. Samantha Johnson,"July 20, 1984"
Amanda Brown,"August 8, 1984"
Sarah Murray,"October 30, 1984"
Mrs. Samantha Johnson,"November 28, 1984"
Austin Hester,"June 4, 1985"
Jonathan Parrish,"March 18, 1986"
Yesenia Smith,"May 6, 1986"
Daniel Jackson,"December 13, 1986"
Gina Maldonado,"February 13, 1987"
Kimberly Stewart,"December 12, 1987"
Mrs. Samantha Johnson,"July 10, 1988"
Sarah Murray,"August 16, 1988"
Aaron Kaufman,"October 24, 1988"
Tony Henderson,"November 7, 1988"
Sarah Murray,"November 19, 1988"
Austin Hester,"January 18, 1989"
Joseph Harris,"March 1, 1989"
Gina Maldonado,"April 7, 1989"
Aaron Kaufman,"November 14, 1989"
Daniel Jackson,"April 8, 1990"
Aaron Kaufman,"May 1, 1990"
Aaron Kaufman,"July 21, 1990"
Tony Henderson,"October 4, 1990"
Yesenia Smith,"November 23, 1990"
Joseph Harris,"April 3, 1991"
Jason Tucker,"April 30, 1991"
Matthew Russell,"May 31, 1991"
Lori Martin,"July 8, 1991"
Mrs. Samantha Johnson,"July 23, 1991"
Tony Henderson,"November 15, 1991"
Gina Maldonado,"February 9, 1992"
Sarah Murray,"June 27, 1992"
Gina Maldonado,"October 31, 1992"
Austin Hester,"December 10, 1992"
Mrs. Samantha Johnson,"December 12, 1992"
Name,Date
Jason Tucker,"September 20, 1980"
Austin Hester,"March 08, 1981"
Daniel Jackson,"October 02, 1981"
Mrs. Samantha Johnson,"December 17, 1981"
Joseph Harris,"March 03, 1982"
Mrs. Samantha Johnson,"March 12, 1982"
Gina Maldonado,"December 16, 1982"
Mrs. Samantha Johnson,"December 23, 1982"
Yesenia Smith,"August 10, 1983"
Lori Martin,"February 05, 1984"
Jonathan Parrish,"June 12, 1984"
Mrs. Samantha Johnson,"July 20, 1984"
Amanda Brown,"August 08, 1984"
Sarah Murray,"October 30, 1984"
Mrs. Samantha Johnson,"November 28, 1984"
Austin Hester,"June 04, 1985"
Jonathan Parrish,"March 18, 1986"
Yesenia Smith,"May 06, 1986"
Daniel Jackson,"December 13, 1986"
Gina Maldonado,"February 13, 1987"
Kimberly Stewart,"December 12, 1987"
Mrs. Samantha Johnson,"July 10, 1988"
Sarah Murray,"August 16, 1988"
Aaron Kaufman,"October 24, 1988"
Tony Henderson,"November 07, 1988"
Sarah Murray,"November 19, 1988"
Austin Hester,"January 18, 1989"
Joseph Harris,"March 01, 1989"
Gina Maldonado,"April 07, 1989"
Aaron Kaufman,"November 14, 1989"
Daniel Jackson,"April 08, 1990"
Aaron Kaufman,"May 01, 1990"
Aaron Kaufman,"July 21, 1990"
Tony Henderson,"October 04, 1990"
Yesenia Smith,"November 23, 1990"
Joseph Harris,"April 03, 1991"
Jason Tucker,"April 30, 1991"
Matthew Russell,"May 31, 1991"
Lori Martin,"July 08, 1991"
Mrs. Samantha Johnson,"July 23, 1991"
Tony Henderson,"November 15, 1991"
Gina Maldonado,"February 09, 1992"
Sarah Murray,"June 27, 1992"
Gina Maldonado,"October 31, 1992"
Austin Hester,"December 10, 1992"
Mrs. Samantha Johnson,"December 12, 1992"