Movie Sorter

import os

os.chdir(os.path.dirname(os.path.realpath(__file__)))

class Movie:
    #initializing movie class and maiking sure release_year and revenue are seen as numbers
    def __init__(self, title, director, genre, release_year, revenue):
        self.title = title
        self.director = director
        self.genre = genre
        self.release_year = int(release_year)
        self.revenue = float(revenue)

    #customizing print functionality
    def __str__(self):
        return f"{self.title} by {self.director} ({self.release_year}) ${self.revenue}M"

#reading the data and passing it through to create classes and adding them to a list of classes
def read_data(filepath):
    movie_list = []
    with open(filepath, 'r') as file:
        for line in file:
            title, director, genre, release_year, revenue = line.strip().split(",")
            movie_list.append(Movie(title, director, genre, release_year, revenue))
    return movie_list

#displaying movies in a new line
def display_movies(movies):
    print("Movie List:")
    for movie in movies:
        print(movie)
    print()

#sorting and displaying movies by year
def display_sorted_movies(movies):
    print("Sorted Movie List:")
    sorted_movies = sorted(movies, key=lambda movie: movie.release_year)
    for movie in sorted_movies:
        print(movie)
    print()

#displaying only movies that are in the romance genre
def display_movies_by_romance(movies):
    sorted_movies = []
    for movie in movies:
        if movie.genre == "Romance":
            sorted_movies.append(movie)
    print("Movies In Romance Genre:")
    for movie in sorted_movies:
        print(movie)
    print()

#displaying the highest revenue for an action movie before 2010
def highest_action_pre2010(movies):
    inrange = []
    for movie in movies:
        if movie.genre == "Action" and movie.release_year < 2010:
            inrange.append(movie)
    sorted_movies = sorted(inrange, key=lambda movie: movie.revenue, reverse = True)
    print(f"Highest Grossing 'Action' Movie Before 2010:\n{sorted_movies[0]}")
       
def main():
    filepath = "movies.txt"       
    movie_list = read_data(filepath)
    display_movies(movie_list)
    display_sorted_movies(movie_list)
    display_movies_by_romance(movie_list)
    highest_action_pre2010(movie_list)

if __name__ == "__main__":
    main()

Input

Output