def putData(self, mibname, data, comments=[], dryRun=False):
if dryRun:
debug.logger & debug.flagWriter and debug.logger('dry run mode')
return
if not os.path.exists(self._path):
try:
os.makedirs(self._path)
except OSError:
raise error.PySmiWriterError('failure creating destination directory %s: %s' % (self._path, sys.exc_info()[1]), writer=self)
if comments:
data = '#\n' + ''.join(['# %s\n' % x for x in comments]) + '#\n' + data
pyfile = os.path.join(self._path, decode(mibname)) + self.suffixes[imp.PY_SOURCE][0][0]
try:
fd, tfile = tempfile.mkstemp(dir=self._path)
os.write(fd, encode(data))
os.close(fd)
os.rename(tfile, pyfile)
except (OSError, IOError, UnicodeEncodeError):
exc = sys.exc_info()
try:
os.unlink(tfile)
except OSError:
pass
raise error.PySmiWriterError('failure writing file %s: %s' % (pyfile, exc[1]), file=pyfile, writer=self)
debug.logger & debug.flagWriter and debug.logger('created file %s' % pyfile)
if self.pyCompile:
try:
if sys.version_info[0:2] > (3, 1):
py_compile.compile(pyfile, doraise=True, optimize=self.pyOptimizationLevel)
else:
py_compile.compile(pyfile, doraise=True)
except (SyntaxError, py_compile.PyCompileError):
pass # XXX
except:
try:
os.unlink(pyfile)
except Exception:
pass
raise error.PySmiWriterError('failure compiling %s: %s' % (pyfile, sys.exc_info()[1]), file=mibname, writer=self)
debug.logger & debug.flagWriter and debug.logger('%s stored' % mibname)
评论列表
文章目录