mirror of https://github.com/python/cpython.git
[3.11] gh-114241: Fix and improve the ftplib CLI (GH-114242) (GH-114405)
* Fix writing the retrieved binary file to stdout.
* Add a newline after writing warnings to stderr.
* Fix a TypeError if the netrc file doesn't contain a host/default entry.
* Improve the usage message.
(cherry picked from commit 42d72b23dd
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
9f164ab70b
commit
58c93d86b7
|
@ -922,11 +922,17 @@ def ftpcp(source, sourcename, target, targetname = '', type = 'I'):
|
|||
|
||||
def test():
|
||||
'''Test program.
|
||||
Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...
|
||||
Usage: ftplib [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...
|
||||
|
||||
-d dir
|
||||
-l list
|
||||
-p password
|
||||
Options:
|
||||
-d increase debugging level
|
||||
-r[file] set alternate ~/.netrc file
|
||||
|
||||
Commands:
|
||||
-l[dir] list directory
|
||||
-d[dir] change the current directory
|
||||
-p toggle passive and active mode
|
||||
file retrieve the file and write it to stdout
|
||||
'''
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
|
@ -952,15 +958,14 @@ def test():
|
|||
netrcobj = netrc.netrc(rcfile)
|
||||
except OSError:
|
||||
if rcfile is not None:
|
||||
sys.stderr.write("Could not open account file"
|
||||
" -- using anonymous login.")
|
||||
print("Could not open account file -- using anonymous login.",
|
||||
file=sys.stderr)
|
||||
else:
|
||||
try:
|
||||
userid, acct, passwd = netrcobj.authenticators(host)
|
||||
except KeyError:
|
||||
except (KeyError, TypeError):
|
||||
# no account for host
|
||||
sys.stderr.write(
|
||||
"No account -- using anonymous login.")
|
||||
print("No account -- using anonymous login.", file=sys.stderr)
|
||||
ftp.login(userid, passwd, acct)
|
||||
for file in sys.argv[2:]:
|
||||
if file[:2] == '-l':
|
||||
|
@ -973,7 +978,9 @@ def test():
|
|||
ftp.set_pasv(not ftp.passiveserver)
|
||||
else:
|
||||
ftp.retrbinary('RETR ' + file, \
|
||||
sys.stdout.write, 1024)
|
||||
sys.stdout.buffer.write, 1024)
|
||||
sys.stdout.buffer.flush()
|
||||
sys.stdout.flush()
|
||||
ftp.quit()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue