Note that there are some explanatory texts on larger screens.

plurals
  1. POgetopt() not enforcing required arguments?
    primarykey
    data
    text
    <p>I'm having problems with this <code>getopt()</code> code in a script that I'm writing which does some simple file manipulation given 2 required parameters (input filename and output filename) and/or 2 optional/situational arguments (debug or help).</p> <p>Code is:</p> <pre><code>def main(argv): try: opts, args = getopt.getopt(argv, "i:o:dh", ["input-file=", "output-file=", "debug", "help"]) except getopt.GetoptError: usage() sys.exit(2) for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt in ("-d", "--debug"): global _debug _debug = 1 elif opt in ("-i", "--input-file"): u_input_file_name = arg elif opt in ("-o", "--output-file"): u_output_file_name = arg </code></pre> <p>According to the <code>getopt()</code> documentation:</p> <blockquote> <p>options that require an argument followed by a colon ('<code>:</code>'; i.e., the same format that Unix getopt() uses).</p> </blockquote> <p>The problem is that as I understand it, the variables/args followed by a <code>:</code> should be enforced as required ... but the options <code>i</code> and <code>o</code> are not being enforced. Running this snippet garners an error about <code>u_input_file_name</code> being referenced before being assigned:</p> <pre><code>[tdelane@fbsd81-1 ~/python]$ ./inco_add_cm_mpscli.py -o google Traceback (most recent call last): File "./inco_add_cm_mpscli.py", line 57, in &lt;module&gt; main(sys.argv[1:]) File "./inco_add_cm_mpscli.py", line 25, in main infile = open(u_input_file_name, 'r') UnboundLocalError: local variable 'u_input_file_name' referenced before assignment </code></pre> <p>What am I doing wrong?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload