+ d = str(v).split('\n')
+ l.append(prefix + k + ":" + d[0])
+ for i in d[1:]:
+ l.append(prefix + ' '*len(k) + ':' + i)
+ return l
+
+ def write(self, f=None, name=None):
+ """
+ Write Status to File ``f`` or overwrite file ``name`` or write to ``stdout`` (otherwise).
+ """
+
+ if not f and name is not None:
+ with open(name, "w") as f:
+ for l in self.dump():
+ f.write(l+"\n")
+ else:
+ if not f:
+ f = sys.stdout
+ for l in self.dump():
+ f.write(l+"\n")
+
+ def read(self, f=None, name=None, lines=None):
+ """
+ Parse Status file
+ * from File ``f``
+ * or from file ``name`` opened for reading 8-bit ASCII
+ * or from ``lines`` (a list/iterator of lines)
+
+ Deletes all previous contents of the Status.
+ """
+
+ self.d = {}
+ if f is not None:
+ return self.do_read(f.readlines())
+ if name is not None:
+ with open(name, 'r') as f:
+ return self.do_read(f.readlines())
+ if lines is not None:
+ return self.do_read(lines)
+ raise ValueError('Provide at least one parameter to Status.read()')