mirror of
				https://github.com/python/cpython.git
				synced 2025-10-29 20:51:26 +00:00 
			
		
		
		
	Added docstrings by Sue Williams, re-indented to 4 spaces / level.
This commit is contained in:
		
							parent
							
								
									8f81ef1edd
								
							
						
					
					
						commit
						bcdb9403d4
					
				
					 1 changed files with 44 additions and 20 deletions
				
			
		|  | @ -1,3 +1,24 @@ | ||||||
|  | """Execute shell commands via os.popen() and return status, output. | ||||||
|  | 
 | ||||||
|  | Interface summary: | ||||||
|  |   | ||||||
|  |        import commands | ||||||
|  |          | ||||||
|  |        outtext = commands.getoutput(cmd) | ||||||
|  |        (exitstatus, outtext) = commands.getstatusoutput(cmd) | ||||||
|  |        outtext = commands.getstatus(file)  # returns output of "ls -ld file" | ||||||
|  | 
 | ||||||
|  | A trailing newline is removed from the output string. | ||||||
|  | 
 | ||||||
|  | Encapsulates the basic operation: | ||||||
|  |                           | ||||||
|  |       pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r') | ||||||
|  |       text = pipe.read() | ||||||
|  |       sts = pipe.close() | ||||||
|  | 
 | ||||||
|  |  [Note:  it would be nice to add functions to interpret the exit status.] | ||||||
|  | """ | ||||||
|  | 
 | ||||||
| # Module 'commands' | # Module 'commands' | ||||||
| # | # | ||||||
| # Various tools for executing commands and looking at their output and status. | # Various tools for executing commands and looking at their output and status. | ||||||
|  | @ -8,7 +29,8 @@ | ||||||
| # Get 'ls -l' status for an object into a string | # Get 'ls -l' status for an object into a string | ||||||
| # | # | ||||||
| def getstatus(file): | def getstatus(file): | ||||||
| 	return getoutput('ls -ld' + mkarg(file)) |     """Return output of "ls -ld <file>" in a string.""" | ||||||
|  |     return getoutput('ls -ld' + mkarg(file)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Get the output from a shell command into a string. | # Get the output from a shell command into a string. | ||||||
|  | @ -16,27 +38,29 @@ def getstatus(file): | ||||||
| # Assume the command will work with '{ ... ; } 2>&1' around it.. | # Assume the command will work with '{ ... ; } 2>&1' around it.. | ||||||
| # | # | ||||||
| def getoutput(cmd): | def getoutput(cmd): | ||||||
| 	return getstatusoutput(cmd)[1] |     """Return output (stdout or stderr) of executing cmd in a shell.""" | ||||||
|  |     return getstatusoutput(cmd)[1] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Ditto but preserving the exit status. | # Ditto but preserving the exit status. | ||||||
| # Returns a pair (sts, output) | # Returns a pair (sts, output) | ||||||
| # | # | ||||||
| def getstatusoutput(cmd): | def getstatusoutput(cmd): | ||||||
| 	import os |     """Return (status, output) of executing cmd in a shell.""" | ||||||
| 	pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r') |     import os | ||||||
| 	text = pipe.read() |     pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r') | ||||||
| 	sts = pipe.close() |     text = pipe.read() | ||||||
| 	if sts == None: sts = 0 |     sts = pipe.close() | ||||||
| 	if text[-1:] == '\n': text = text[:-1] |     if sts == None: sts = 0 | ||||||
| 	return sts, text |     if text[-1:] == '\n': text = text[:-1] | ||||||
|  |     return sts, text | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Make command argument from directory and pathname (prefix space, add quotes). | # Make command argument from directory and pathname (prefix space, add quotes). | ||||||
| # | # | ||||||
| def mk2arg(head, x): | def mk2arg(head, x): | ||||||
| 	import os |     import os | ||||||
| 	return mkarg(os.path.join(head, x)) |     return mkarg(os.path.join(head, x)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Make a shell command argument from a string. | # Make a shell command argument from a string. | ||||||
|  | @ -47,12 +71,12 @@ def mk2arg(head, x): | ||||||
| # with backslash. | # with backslash. | ||||||
| # | # | ||||||
| def mkarg(x): | def mkarg(x): | ||||||
| 	if '\'' not in x: |     if '\'' not in x: | ||||||
| 		return ' \'' + x + '\'' | 	return ' \'' + x + '\'' | ||||||
| 	s = ' "' |     s = ' "' | ||||||
| 	for c in x: |     for c in x: | ||||||
| 		if c in '\\$"`': | 	if c in '\\$"`': | ||||||
| 			s = s + '\\' | 	    s = s + '\\' | ||||||
| 		s = s + c | 	    s = s + c | ||||||
| 	s = s + '"' |     s = s + '"' | ||||||
| 	return s |     return s | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fred Drake
						Fred Drake