Today's Posts

Post questions about C, C++, Java, SQL, and other programming languages here.

Python passing filename through argument

argument, filename, programming, python

Login to Reply

Thread Tools Search this Thread
# 1  
Old 08-10-2015
Python passing filename through argument

A python beginner question on passing filename thru argument. My code is:


import sys, getopt
import os

def main(argv):
        opts, args = getopt.getopt(sys.argv[1:],"hi:o:ce", ["help", "inputfile", "outputdir", "containment", "error_tolerance"])
    except getopt.GetoptError:
        print("Usage: %s -i inputfile -o outputdirectory -c containment -e error_tolerance" % sys.argv[0])

    for opt, arg in opts:
        if opt == '-h':
           print 'this_script.py -i <inputfile> -o <outputdir> -c <containment> -e <error_tolerance>'
        elif opt in ("-i", "--infile"):
           inputfile = arg    #Is this the right way to pass filename thru argument?
        elif opt in ("-o", "--outdir"):
           outputdir = arg
        elif opt == '-c':
           containment = arg
        elif opt == '-e':
           error_pct = arg

if __name__ == '__main__':

def get_overlap_data(m4_filename):
    containment_tolerance = containment
    permitted_error_pct = error_pct
    overlap_data = {}
    contained_reads = set()
    with open(m4_filename) as m4_f:
        for l in m4_f:
            # ......omitted
    return overlap_data, contained_reads

overlap_data, contained_reads = get_overlap_data(inputfile)   #This line always gave error

but I always got error as:
Traceback (most recent call last):
  File "learnpython01.py", line 123, in <module>
    overlap_data, contained_reads = get_overlap_data(inputfile)
NameError: name 'inputfile' is not defined

I was wondering what the right way it is to pass filename thru argument in python. Related lines are highlighted in red.
Thanks a lot!
# 2  
Old 08-10-2015
With python, error debuging starts at the bottom - with the 'last' error found
Also, to parse options, you should loop through the arguments, and use a case statement to identify the current option name 'opt' (which was retrieved from arg[v]).

Have a look at: info getopt and continue reading (PGDN).
Also checkout man getopt, to get a possible location for code Examples.

Hope this helps
# 3  
Old 08-10-2015
Note also that inputfile is only defined if a -i inputfile option is present on the command line.

Maybe you want to define it with a default value in case that option is not present. Or, if there is no reasonable default, print an error message and exit if no -i option was found while parsing the options.
# 4  
Old 08-10-2015
What I expected to have the script working in following command line:
python learnpython01.py -i infile -o outdir -c 500 -e 2

Could not find examples on handling file I/O stream.
I have difficulty to understand string[file] I/O stream here. In the example code, the function prototype is
def get_overlap_data(m4_filename):
and, calling of the function is by
overlap_data, contained_reads = get_overlap_data(inputfile)
whereinputfile = arg from argument parsing.
I am not sure what I have missed among the connections, if any stream is involved.
Thanks any way!

Last edited by yifangt; 08-10-2015 at 06:17 PM..
# 5  
Old 10-27-2015
The inputfile name is defined inside the function main, so it is out of scope when you're calling
overlap_data, contained_reads = get_overlap_data(inputfile)

, so you could just call get_overlap_data from inside of main, after handling all the args.
# 6  
Old 11-06-2015
I regret posting this naive questions before I read the book(s). After some more reading and found out one solution:
overlap_data, contained_reads = get_overlap_data(sys.argv[1])

Need more about getopt() and argparse (as Aia pointed out below) in python.
Thanks to all who replied.

Last edited by yifangt; 12-22-2015 at 01:44 PM..
# 7  
Old 11-07-2015
Try to learn about argparse instead of getopt.
Some documentation why getopt or optparse might not be the right solution.
The Following User Says Thank You to Aia For This Useful Post:
yifangt (12-22-2015)
Login to Reply

« Previous Thread | Next Thread »
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Passing a second argument MIA651 UNIX for Beginners Questions & Answers 4 07-25-2018 06:36 PM
Using python with argument in TCSH autocompletion chistof Shell Programming and Scripting 5 09-05-2016 02:29 AM
**python : passing list as argument and updating in definition scriptscript Shell Programming and Scripting 5 08-12-2015 02:41 PM
Argument passing Roozo Shell Programming and Scripting 9 03-15-2013 07:19 AM
Help with passing argument dollypee Shell Programming and Scripting 7 11-22-2012 03:50 PM
passing an option as an argument! dixits Shell Programming and Scripting 2 05-04-2012 04:45 PM
Passing argument to command in C effizy Programming 3 09-26-2011 12:17 PM
Help with Passing argument and testing zeebala1981 Shell Programming and Scripting 3 03-01-2010 12:19 AM
Using GET, passing argument to bash Rhije Shell Programming and Scripting 5 09-26-2009 06:56 AM
Passing argument to nawk ganiel24 Shell Programming and Scripting 2 06-25-2009 08:26 AM
passing Argument Shahul Shell Programming and Scripting 4 11-13-2008 08:50 AM
Problem in argument passing tsaravanan Shell Programming and Scripting 4 09-23-2008 09:53 AM
passing argument into awk prkfriryce Shell Programming and Scripting 4 02-01-2007 04:44 PM
Problem with Argument Passing A_Rod Shell Programming and Scripting 4 09-13-2006 12:47 PM
pass argument to a filename jpprial UNIX for Dummies Questions & Answers 1 09-03-2001 04:12 PM

All times are GMT -4. The time now is 10:03 PM.

Unix & Linux Forums Content Copyright 1993-2018. All Rights Reserved.
Show Password