Skip to content

Instantly share code, notes, and snippets.

@vianaweb
Created January 18, 2009 18:37
Show Gist options
  • Save vianaweb/48729 to your computer and use it in GitHub Desktop.
Save vianaweb/48729 to your computer and use it in GitHub Desktop.
<pre><span class="kn">import</span> <span class="nn">getopt</span><span class="o">,</span> <span class="nn">sys</span>
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">getopt</span><span class="o">.</span><span class="n">getopt</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">:],</span> <span class="s">"ho:v"</span><span class="p">,</span> <span class="p">[</span><span class="s">"help"</span><span class="p">,</span> <span class="s">"output="</span><span class="p">])</span>
<span class="k">except</span> <span class="n">getopt</span><span class="o">.</span><span class="n">GetoptError</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span>
<span class="c"># print help information and exit:</span>
<span class="k">print</span> <span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="c"># will print something like "option -a not recognized"</span>
<span class="n">usage</span><span class="p">()</span>
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">2</span><span class="p">)</span>
<span class="n">output</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">verbose</span> <span class="o">=</span> <span class="bp">False</span>
<span class="k">for</span> <span class="n">o</span><span class="p">,</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
<span class="k">if</span> <span class="n">o</span> <span class="o">==</span> <span class="s">"-v"</span><span class="p">:</span>
<span class="n">verbose</span> <span class="o">=</span> <span class="bp">True</span>
<span class="k">elif</span> <span class="n">o</span> <span class="ow">in</span> <span class="p">(</span><span class="s">"-h"</span><span class="p">,</span> <span class="s">"--help"</span><span class="p">):</span>
<span class="n">usage</span><span class="p">()</span>
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
<span class="k">elif</span> <span class="n">o</span> <span class="ow">in</span> <span class="p">(</span><span class="s">"-o"</span><span class="p">,</span> <span class="s">"--output"</span><span class="p">):</span>
<span class="n">output</span> <span class="o">=</span> <span class="n">a</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">assert</span> <span class="bp">False</span><span class="p">,</span> <span class="s">"unhandled option"</span>
<span class="c"># ...</span>
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
<span class="n">main</span><span class="p">()</span>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment