fork download
  1. import os.path
  2. import csv
  3.  
  4. class BaseCar:
  5. def __init__(self, car_type, photo_file_name):
  6. self.car_type = car_type
  7. self.photo_file_name = photo_file_name
  8.  
  9.  
  10.  
  11. def get_photo_file_ext(self):
  12. return os.path.splitext(self.photo_file_name)[1].strip('.')
  13.  
  14.  
  15.  
  16.  
  17. class Car(BaseCar):
  18. def __init__(self, car_type, brand, passenger_seats_count, photo_file_name, carrying):
  19. super().__init__(car_type, photo_file_name)
  20. self.brand = brand
  21. self.carrying = carrying
  22. self.passenger_seats_count = passenger_seats_count
  23.  
  24.  
  25.  
  26.  
  27.  
  28. class Truck(BaseCar):
  29. def __init__(self, car_type, brand, photo_file_name, carrying, body_whl):
  30. super().__init__(car_type, photo_file_name)
  31. self.brand = brand
  32. self.carrying = carrying
  33. self.body_whl = body_whl
  34. self.body_width = float(body_whl.split('x')[0]) or 0
  35. self.body_height = float(body_whl.split('x')[1]) or 0
  36. self.body_length = float(body_whl.split('x')[2]) or 0
  37.  
  38. def get_body_volume(self):
  39. return "volume: {} cubic meters".format(self.body_length * self.body_width * self.body_height)
  40.  
  41. class SpecMachine(BaseCar):
  42. def __init__(self, car_type, brand, photo_file_name, carrying, extra):
  43. super().__init__(car_type, photo_file_name)
  44. self.brand = brand
  45. self.carrying = carrying
  46. self.extra = extra
  47.  
  48.  
  49.  
  50.  
  51. def get_car_list(filename):
  52. result = []
  53. with open(filename, newline='') as csvfile:
  54. content = csv.reader(csvfile)
  55. next(content)
  56.  
  57. for line in content:
  58. try:
  59. arguments = line[0].split(';')
  60. if len(arguments) == 7: # proper string contains 7 elenets
  61. car_type, brand, passenger_seats_count, photo_file_name, body_whl, carrying, extra = arguments
  62. if arguments[0] == 'car':
  63. result.append(Car(car_type, passenger_seats_count, photo_file_name, carrying, car_type))
  64. elif arguments[0] == 'truck':
  65. result.append(Truck(car_type, brand, photo_file_name, body_whl, carrying))
  66. elif arguments[0] == 'spec_machine':
  67. result.append(SpecMachine(car_type, brand, photo_file_name, carrying, extra))
  68. except IndexError:
  69. print('Something goes wrong')
  70.  
  71. return result
  72.  
  73.  
  74. print(get_car_list('cars.csv'))
Runtime error #stdin #stdout #stderr 0.04s 30696KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 74, in <module>
  File "./prog.py", line 53, in get_car_list
FileNotFoundError: [Errno 2] No such file or directory: 'cars.csv'