import multiprocessing as mp from Car import Car, Model, Color def load_from_file(park, filename=r"cars.csv"): """ 从文件中读取车辆信息。 :param park:停车场实例 :param filename:文件名 :return: {class ParkManage}park, {int}cnt:导入成功计数 """ cnt = 0 # counter try: with open(filename, 'r+') as fp: while True: temp_car = fp.readline() if temp_car == '': break else: items = list(temp_car.strip().split(',')) car = Car(int(items[0]), items[1], Model(int(items[2])), Color(int(items[3])), items[4]) park.carlist.append(car) cnt += 1 except Exception: print('File loaded error!') return park, cnt def load_new_file(park): """ 从新文件中加载记录,成功返回加载后的park,否则返回原来的park 注意:此处暂未考虑重复记录及记录的有效性! :param park:停车场实例 :return: {class ParkManage}park """ filename = input('请输入导入的文件名(请勿重复导入):') if filename == '': print('文件名不能为空!') return park elif filename == 'cars.csv': print('请勿导入重复文件!') return park else: temp_park, cnt_success = load_from_file(park=park, filename=filename) if cnt_success > 0: print('成功导入 %d 条记录。' % cnt_success) return temp_park else: print('导入失败!') return park def write_to_file(park, filename=r"cars.csv"): """ 将车辆信息写入文件。 :param park:停车场实例 :param filename:文件名 :return: None """ try: with open(filename, 'w+') as file: if len(park.carlist) == 0: pass for parkedCar in park.carlist: file.write('{},{},{},{},{}\n'.format(parkedCar.parknum, parkedCar.carnum, parkedCar.model.value, parkedCar.color.value, parkedCar.intime)) except Exception: print('File wrote error!') def realtimeIO(): """ TODO 实时读写文件 思路:子进程每隔一段时间检查一次self.carlist,发现改动则更新文件。 :return: None """ pass