From: Benjamin Peterson Date: Sun, 31 Oct 2010 18:21:16 +0000 (+0000) Subject: wrap some things in with blocks X-Git-Tag: v3.2a4~213 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a807137c3916ecd098cedc5a3d725310d43a88d9;p=python wrap some things in with blocks --- diff --git a/Lib/ftplib.py b/Lib/ftplib.py index 9c190baa05..50dbacc18f 100644 --- a/Lib/ftplib.py +++ b/Lib/ftplib.py @@ -406,13 +406,12 @@ class FTP: The response code. """ self.voidcmd('TYPE I') - conn = self.transfercmd(cmd, rest) - while 1: - data = conn.recv(blocksize) - if not data: - break - callback(data) - conn.close() + with self.transfercmd(cmd, rest) as conn: + while 1: + data = conn.recv(blocksize) + if not data: + break + callback(data) return self.voidresp() def retrlines(self, cmd, callback = None): @@ -429,20 +428,18 @@ class FTP: """ if callback is None: callback = print_line resp = self.sendcmd('TYPE A') - conn = self.transfercmd(cmd) - fp = conn.makefile('r', encoding=self.encoding) - while 1: - line = fp.readline() - if self.debugging > 2: print('*retr*', repr(line)) - if not line: - break - if line[-2:] == CRLF: - line = line[:-2] - elif line[-1:] == '\n': - line = line[:-1] - callback(line) - fp.close() - conn.close() + with self.transfercmd(cmd) as conn, \ + conn.makefile('r', encoding=self.encoding) as fp: + while 1: + line = fp.readline() + if self.debugging > 2: print('*retr*', repr(line)) + if not line: + break + if line[-2:] == CRLF: + line = line[:-2] + elif line[-1:] == '\n': + line = line[:-1] + callback(line) return self.voidresp() def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None): @@ -461,13 +458,12 @@ class FTP: The response code. """ self.voidcmd('TYPE I') - conn = self.transfercmd(cmd, rest) - while 1: - buf = fp.read(blocksize) - if not buf: break - conn.sendall(buf) - if callback: callback(buf) - conn.close() + with self.transfercmd(cmd, rest) as conn: + while 1: + buf = fp.read(blocksize) + if not buf: break + conn.sendall(buf) + if callback: callback(buf) return self.voidresp() def storlines(self, cmd, fp, callback=None): @@ -483,16 +479,15 @@ class FTP: The response code. """ self.voidcmd('TYPE A') - conn = self.transfercmd(cmd) - while 1: - buf = fp.readline() - if not buf: break - if buf[-2:] != B_CRLF: - if buf[-1] in B_CRLF: buf = buf[:-1] - buf = buf + B_CRLF - conn.sendall(buf) - if callback: callback(buf) - conn.close() + with self.transfercmd(cmd) as conn: + while 1: + buf = fp.readline() + if not buf: break + if buf[-2:] != B_CRLF: + if buf[-1] in B_CRLF: buf = buf[:-1] + buf = buf + B_CRLF + conn.sendall(buf) + if callback: callback(buf) return self.voidresp() def acct(self, password):