天天看点

python argparse例子

arg_1

<code>#!/usr/bin/python</code>

<code>#coding=utf-8</code>

<code>import</code> <code>argparse</code>

<code>def</code> <code>parse_args():</code>

<code>    </code><code>description </code><code>=</code> <code>"usage: % prog[options]"</code>

<code>    </code><code>parser </code><code>=</code> <code>argparse.ArgumentParser(description</code><code>=</code><code>description)</code>

<code>    </code><code>parser.add_argument(</code><code>'addresses'</code><code>, nargs</code><code>=</code><code>'*'</code><code>, </code><code>help</code><code>=</code><code>'help'</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>'filename'</code><code>, </code><code>help</code><code>=</code><code>'help'</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>'-p'</code><code>, </code><code>'--port'</code><code>, </code><code>type</code><code>=</code><code>int</code><code>, </code><code>help</code><code>=</code><code>'help'</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>'--iface'</code><code>, </code><code>help</code><code>=</code><code>help</code><code>, default</code><code>=</code><code>'localhost'</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>'--delay'</code><code>, </code><code>type</code><code>=</code><code>float</code><code>, </code><code>help</code><code>=</code><code>help</code><code>, default</code><code>=</code><code>.</code><code>7</code><code>)</code>

<code>    </code><code>parser.add_argument(</code><code>'--bytes'</code><code>, </code><code>type</code><code>=</code><code>int</code><code>, </code><code>help</code><code>=</code><code>help</code><code>, default</code><code>=</code><code>10</code><code>)</code>

<code>    </code><code>args </code><code>=</code> <code>parser.parse_args()</code>

<code>    </code><code>return</code> <code>args</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>args </code><code>=</code> <code>parse_args()</code>

<code>    </code><code>for</code> <code>address </code><code>in</code> <code>args.addresses:</code>

<code>        </code><code>print</code> <code>'The address is : %s .'</code> <code>%</code> <code>address</code>

<code>        </code><code>print</code> <code>'The filename is : %s .'</code> <code>%</code> <code>args.filename</code>

<code>        </code><code>print</code> <code>'The port is : %d.'</code> <code>%</code> <code>args.port</code>

<code>        </code><code>print</code> <code>'The interface is : %s.'</code> <code>%</code> <code>args.iface</code>

<code>        </code><code>print</code> <code>'The number of seconds between sending bytes : %f'</code> <code>%</code> <code>args.delay</code>

<code>        </code><code>print</code> <code>'The number of bytes to send at a time : %d.'</code> <code>%</code> <code>args.bytes</code>

<code>#-p 22 --delay 1.2 127.0.0.1 172.16.55.67 poetry/ecstasy.txt</code>

2.arg_2

<code># coding=utf-8</code>

<code>from</code> <code>argparse </code><code>import</code> <code>ArgumentParser, RawTextHelpFormatter</code>

<code>def</code> <code>get_args():</code>

<code>    </code><code>"""实例化类,formatter_class参数允许help信息以自定义的格式显示"""</code>

<code>    </code><code>parser </code><code>=</code> <code>ArgumentParser(description</code><code>=</code><code>"This is a tool for execute command(s) on remote server(s) or get/put file(s) from/to the remote server(s)\nNotice: please always use '/' as path separater!!!"</code><code>,formatter_class</code><code>=</code><code>RawTextHelpFormatter,epilog</code><code>=</code><code>"Notice:\n  If any options use more than once,the last one will overwrite the previous"</code><code>)</code>

<code>    </code><code>remote_command </code><code>=</code> <code>parser.add_argument_group(</code><code>'remote command'</code><code>, </code><code>'options for running remote command'</code><code>)</code>

<code>    </code><code>remote_command.add_argument(</code><code>'--cmd'</code><code>, metavar</code><code>=</code><code>'“COMMAND”'</code><code>, dest</code><code>=</code><code>'cmd'</code><code>,</code><code>help</code><code>=</code><code>"command run on remote server,multiple commands sperate by ';'"</code><code>)</code>

<code>    </code><code>sftp </code><code>=</code> <code>parser.add_argument_group(</code><code>'sftp'</code><code>, </code><code>'options for running sftp'</code><code>)</code>

<code>    </code><code>sftp.add_argument(</code><code>'--put'</code><code>, metavar</code><code>=</code><code>'', </code><code>help</code><code>=</code><code>"transfer from local to remote"</code><code>, nargs</code><code>=</code><code>2</code><code>)</code>

<code>    </code><code>sftp.add_argument(</code><code>'--get'</code><code>, metavar</code><code>=</code><code>'', </code><code>help</code><code>=</code><code>"transfer from remote to local"</code><code>, nargs</code><code>=</code><code>2</code><code>)</code>

<code>    </code><code>global</code> <code>args</code>

<code>    </code><code>args </code><code>=</code> <code>vars</code><code>(parser.parse_args())</code>

<code>    </code><code>print</code> <code>args</code>

<code>    </code><code>n </code><code>=</code> <code>0</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>(</code><code>'cmd'</code><code>, </code><code>'put'</code><code>, </code><code>'get'</code><code>):</code>

<code>        </code><code>if</code> <code>i </code><code>in</code> <code>args:</code>

<code>            </code><code>if</code> <code>args[i] </code><code>is</code> <code>None</code><code>:</code>

<code>                </code><code>del</code> <code>args[i]</code>

<code>            </code><code>else</code><code>:</code>

<code>                </code><code>n </code><code>+</code><code>=</code> <code>1</code>

<code>    </code><code>if</code> <code>n &gt; </code><code>1</code><code>:</code>

<code>        </code><code>print</code><code>(</code><code>'\n  Only one of the "--cmd --put --get" can be used!'</code><code>)</code>

<code>        </code><code>exit(</code><code>10</code><code>)</code>

<code>    </code><code>get_args()</code>

<code>    </code><code>if</code> <code>'cmd'</code> <code>in</code> <code>args:</code>

<code>        </code><code>echo_cmd </code><code>=</code> <code>args[</code><code>'cmd'</code><code>]</code>

<code>        </code><code>print</code> <code>echo_cmd</code>

<code>        </code> 

<code> </code><code># --cmd uptime --get /home/nginx /home/nginx</code>

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/2055878,如需转载请自行联系原作者