title: Set and require default Python script OptionParser
body: <p>The following "parser.add_option" statements work but if the script is run without an option/arg it will not complain. If an option/argument are not specified I would like it to display help (-h / --help) as default.</p>
  
  <pre><code>usage = "usage: %prog [options] arg"
  parser = OptionParser(usage)
  parser.add_option('-d', '--directory',
          action='store', dest='directory',
          default=None, help='specify directory')
  parser.add_option('-f', '--file',
          action='store', dest='filename',
          default=None, help='specify file')
  parser.add_option('-v', '--version',
                    action="store_true", dest="show_version",
                    default=False, help='displays the version number')
  (options, args) = parser.parse_args()
  #if len(args) &lt; 1:
  #    parser.error("incorrect number of arguments")
  </code></pre>
  
  <p>Secondly, if I enable the following snip than I get "error: incorrect number of arguments" even when specifying an option/arg.</p>
  
  <pre><code>if len(args) &lt; 1:
  parser.error("incorrect number of arguments")
  </code></pre>
  
  <p>Thanks.</p>
  
  <hr>
  
  <p><strong>Updated Code with Traceback error below</strong></p>
  
  <pre><code>def main():
      usage = "usage: %prog [options] arg"
      parser = OptionParser(usage)
      parser.add_option('-d', '--directory',
              action='store', dest='directory',
              default=None, help='specify directory')
      parser.add_option('-f', '--file',
              action='store', dest='filename',
              default=None, help='specify file')
      parser.add_option('-v', '--version',
                        action="store_true", dest="show_version",
                        default=False, help='displays the version number')
      if len(sys.argv) == 1:
          parser.print_help()
          sys.exit()
      (options, args) = parser.parse_args()
  
  #if options.show_version:
  #    prog = os.path.basename(sys.argv[0])
  #    version_str = "1.0"
  #    print "version is: %s %s" % (prog, version_str)
  #    sys.exit(0)
  
  filenames_or_wildcards = []
  
  # remove next line if you do not want allow to run the script without the -f -d
  # option, but with arguments
  filenames_or_wildcards = args # take all filenames passed in the command line
  
  # if -f was specified add them (in current working directory)
  if options.filename is not None:
      filenames_or_wildcards.append(options.filename)
  </code></pre>
  
  <p><strong>Traceback</strong></p>
  
  <pre><code>$ python boto-backup.py Traceback (most recent call last):   File "boto-backup.py", line 41, in &lt;module&gt;
      filenames_or_wildcards = args # take all filenames passed in the command line NameError: name 'args' is not defined
  </code></pre>