Turn SFTPFile into a context manager

This commit is contained in:
Michael Williamson 2013-01-04 23:39:48 +00:00
parent 21cb9a2d86
commit 602250fdf9
2 changed files with 17 additions and 0 deletions

View File

@ -474,3 +474,9 @@ class SFTPFile (BufferedFile):
x = self._saved_exception
self._saved_exception = None
raise x
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
self.close()

View File

@ -188,6 +188,17 @@ class SFTPTest (unittest.TestCase):
finally:
sftp.remove(FOLDER + '/duck.txt')
def test_3_sftp_file_can_be_used_as_context_manager(self):
"""
verify that an opened file can be used as a context manager
"""
try:
with sftp.open(FOLDER + '/duck.txt', 'w') as f:
f.write(ARTICLE)
self.assertEqual(sftp.stat(FOLDER + '/duck.txt').st_size, 1483)
finally:
sftp.remove(FOLDER + '/duck.txt')
def test_4_append(self):
"""
verify that a file can be opened for append, and tell() still works.