Apr-05-2018, 12:46 AM
I've already imported csv, so I don't understand why it's complaining about line 20 in the following code:
#!/usr/bin/env python3 #MovieListCSV.py #This program does pretty much the same thing as MovieList2D.py. The only #difference about this program is that it calls the writeMovies function #whenever the user updates the list, so that the data is still saved if this #program crashes. import csv FILENAME = "movies.csv" def writeMovies(movies): with open(FILENAME, "w", newline="") as file: writer = csv.writer(file) writer.writerows(movies) def readMovies(): movies = [] with open(FILENAME, "w", newline="") as file: reader = csv.reader(file) for row in reader: movies.append(row) return movies def listMovies(movies): for i in range(len(movies)): movie = movies[i] print(str(i+1) + ". " + movie[0] + " (" + movie[1] + ")") print() def addMovie(movies): name = input("Name: ") year = input("Year: ") movie = [] movie.append(name) movie.append(year) movies.append(movie) writeMovies(movies) print(name + " was added.\n") def deleteMovie(movies): index = int(input("Movie Number: ")) movie = movies.pop(index - 1) writeMovies(movies) print(movie[0] + " was deleted.\n") def displayMenu(): print("COMMAND MENU") print("list - List all movies") print("add - Add a movie") print("del - Delete a movie") print("exit - Exit the program") print() def main(): displayMenu() movies = readMovies() while True: command = input("Enter Command: ") if command.lower() == "list": listMovies(movies) elif command.lower() == "add": addMovie(movies) elif command.lower() == "del": deleteMovie(movies) elif command.lower() == "exit": break else: print("Invalid command. Please try again.") print("Bye!") if __name__ == "__main__": main()
Error:Traceback (most recent call last):
File "I:\Python\Python36-32\SamsPrograms\MovieListCSV.py", line 72, in <module>
main()
File "I:\Python\Python36-32\SamsPrograms\MovieListCSV.py", line 56, in main
movies = readMovies()
File "I:\Python\Python36-32\SamsPrograms\MovieListCSV.py", line 20, in readMovies
for row in reader:
io.UnsupportedOperation: not readable
>>>