Преглед изворни кода

storage: properly handle non-existing (or empty) file

Helge Jung пре 9 година
родитељ
комит
a9ddaa85be
1 измењених фајлова са 7 додато и 4 уклоњено
  1. 7 4
      ffstatus/storage.py

+ 7 - 4
ffstatus/storage.py

@@ -10,14 +10,17 @@ class Storage:
 		self.storage_dir = storage_dir
 
 		self.logger.debug('Using storage at \'{0}\''.format(storage_dir))
-		self.storage_file = open(os.path.join(storage_dir, 'storage.dat'), 'rwb')
-		self.logger.debug('storage_file = ' + str(self.storage_file))
+		self.storage_file = open(os.path.join(storage_dir, 'storage.dat'), 'a+b')
 		try:
+			self.storage_file.seek(0, os.SEEK_SET)
 			self.data = pickle.load(self.storage_file)
 		except EOFError:
-			self.logger.info('The storage file was empty, I can handle this.')
+			self.logger.warn('The storage file was empty. I\'ll assume this is the first start with this storage directory.')
 		except Exception as err:
-			self.logger.error('Loading the storage failed. Please resolve the error and/or remove the storage file \'{0}\': {1}'.format(self.storage_file, str(err)))
+			self.logger.error('Loading the storage failed. Please resolve the error and/or remove the storage file \'{0}\': {1}'.format(
+				os.path.join(storage_dir, self.storage_file.name),
+				str(err),
+			))
 			raise err
 		if self.data is None: self.data = {}
 		self.logger.info('Opened storage with ' + str(len(self.data)) + ' entries.')