Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/rev/b6a53615f1e9
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 01:00:43 2012
Кодировка:
allpy: b6a53615f1e9

allpy

changeset 639:b6a53615f1e9

allpy.fileio: wrapped some calls into try-finally; EmbossFile should now behave correctly if exceptions occur now
author Daniil Alexeyevsky <dendik@kodomo.fbb.msu.ru>
date Mon, 30 May 2011 20:38:58 +0400
parents 843d6a5f8521
children 69079d72d207
files allpy/fileio.py
diffstat 1 files changed, 15 insertions(+), 12 deletions(-) [+]
line diff
     1.1 --- a/allpy/fileio.py	Wed May 25 20:25:32 2011 +0400
     1.2 +++ b/allpy/fileio.py	Mon May 30 20:38:58 2011 +0400
     1.3 @@ -57,12 +57,14 @@
     1.4  
     1.5      def write_strings(self, sequences):
     1.6          """Write sequences to file."""
     1.7 -        # XXX: in case of exceptions files are not closed, nor unlinked
     1.8 -        tmpfile = NamedTemporaryFile('w', delete=False)
     1.9 -        FastaFile(tmpfile).write_strings(self.fix_sequences(sequences))
    1.10 -        tmpfile.close()
    1.11 -        os.system("seqret %s::%s %s" % (self.format, tmpfile.name, self.file.name))
    1.12 -        os.unlink(tmpfile.name)
    1.13 +        try:
    1.14 +            tmpfile = NamedTemporaryFile('w', delete=False)
    1.15 +            FastaFile(tmpfile).write_strings(self.fix_sequences(sequences))
    1.16 +            tmpfile.close()
    1.17 +            os.system("seqret %s::%s %s" % (self.format, tmpfile.name, self.file.name))
    1.18 +        finally:
    1.19 +            tmpfile.close()
    1.20 +            os.unlink(tmpfile.name)
    1.21  
    1.22      def fix_sequences(self, sequences):
    1.23          """EMBOSS does not permit : in file names. Fix sequences for that."""
    1.24 @@ -71,12 +73,13 @@
    1.25  
    1.26      def read_strings(self):
    1.27          """Read sequences from file."""
    1.28 -        # XXX: in case of exceptions files are not closed, nor unlinked
    1.29 -        tmpfile = NamedTemporaryFile(delete=False)
    1.30 -        self.file.flush()
    1.31 -        os.system("seqret %s %s::%s" % (self.file.name, self.format, tmpfile.name))
    1.32 -        sequences = FastaFile(tmpfile).read_strings()
    1.33 -        os.unlink(tmpfile)
    1.34 +        try:
    1.35 +            tmpfile = NamedTemporaryFile(delete=False)
    1.36 +            self.file.flush()
    1.37 +            os.system("seqret %s %s::%s" % (self.file.name, self.format, tmpfile.name))
    1.38 +            sequences = FastaFile(tmpfile).read_strings()
    1.39 +        finally:
    1.40 +            os.unlink(tmpfile)
    1.41          return sequences
    1.42  
    1.43  # vim: set et ts=4 sts=4 sw=4: