mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	gh-114241: Fix and improve the ftplib CLI (GH-114242)
* 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.
This commit is contained in:
		
							parent
							
								
									336030161a
								
							
						
					
					
						commit
						42d72b23dd
					
				
					 1 changed files with 17 additions and 10 deletions
				
			
		|  | @ -900,11 +900,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: | ||||
|  | @ -930,15 +936,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': | ||||
|  | @ -951,7 +956,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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka