2015-07-13 16 views
5

Così ho scritto un po 'di classe in uno script Python come:chiamata Python metodi di classe dalla riga di comando

#!/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] 

Se chiamo questo script dalla linea di comando, come io sono in grado di chiamare il metodo? quindi di solito inserisco: $ python test.py test_file Ora ho solo bisogno di sapere come accedere alla funzione di classe chiamata "metodo".

+0

essere un po 'più chiaro possibile – The6thSense

+0

duplicato di [Python: Eseguire la funzione dalla riga di comando] (http://stackoverflow.com/questions/3987041/python-run-function-from-the-command- line) – Sam

risposta

2

devi creare un'istanza della classe, quindi chiamare il metodo:

test_instance = test(filepath) 
test_instance.method() 

Si noti che in Python che fai non hanno creare classi solo per eseguire codice. Si potrebbe utilizzare una semplice funzione qui:

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]) 

dove mi sono trasferito la chiamata di funzione a una guardia __main__ modo che si può anche utilizzare lo script come modulo e importare la funzione read_csv() per l'uso altrove.

+0

So che potrei usare la funzione senza scriverla in una classe ma ero semplicemente curioso di sapere come sarebbe stato possibile farlo :) – JadenBlaine

0

Aprire l'interprete Python dalla riga di comando.

$ python 

Importare il modulo codice Python, creare un'istanza di classe e chiamare il metodo.

>>> import test 
>>> instance = test(test_file) 
>>> instance.method() 
Problemi correlati