Call Python class methods from the command line

JadenBlaine picture JadenBlaine · Jul 13, 2015 · Viewed 31.9k times · Source

so I wrote some class in a Python script like:

#!/usr/bin/python
import sys
import csv
filepath = sys.argv[1]

class test(object):
    def __init__(self, filepath):
        self.filepath = filepath

    def method(self):
        list = []
        with open(self.filepath, "r") as table:
            reader = csv.reader(table, delimiter="\t")
            for line in reader:
                list.append[line]

If I call this script from the command line, how am I able to call method? so usually I enter: $ python test.py test_file Now I just need to know how to access the class function called "method".

Answer

Martijn Pieters picture Martijn Pieters · Jul 13, 2015

You'd create an instance of the class, then call the method:

test_instance = test(filepath)
test_instance.method()

Note that in Python you don't have to create classes just to run code. You could just use a simple function here:

import sys
import csv

def read_csv(filepath):
    list = []
    with open(self.filepath, "r") as table:
        reader = csv.reader(table, delimiter="\t")
        for line in reader:
            list.append[line]

if __name__ == '__main__':
    read_csv(sys.argv[1])

where I moved the function call to a __main__ guard so that you can also use the script as a module and import the read_csv() function for use elsewhere.