2015-03-12 1 views
0

Ниже мой код, где я не получаю выход ... после запуска сценария с InputFile и выходной файл ...Python - вывод не приходит после разбора параметров командной строки

def parseCommandLine(argv=[]): 
    inputfile = '' 
    outputfile = '' 
    FCSNAME = '' 

    try: 
     opts, args = getopt.getopt(
      argv, 
      "hiop", 
      [help,"ifile=","ofile=","pcsfile="]) 
    except getopt.GetoptError,msg: 
     printUsage() 
     print "-E-Badly formed command line vishal!" 
     print " ",msg 
     sys.exit(1) 

    #Processing command line arguments 
    for opt, arg in opts: 
     opt= opt.lower() 

     # Help 
     if opt in ("-h", "--help"): 
      printUsage() 
      sys.exit() 
     elif opt in ("-i", "--ifile"): 
      inputfile = arg 
     elif opt in ("-o", "--ofile"): 
      outputfile = arg 
     elif opt in ("-p", "--pcsname"): 
      PCSNAME = arg 
     if opt in ("-v"): 
      VERBOSE = 1  
    print 'Input file is "', inputfile 
    print 'Output file is "', outputfile 
    print 'PCS NAME is "', FCSNAME 
      # Verbose 


    return 0 

Выход: ./ aaa_scr -i список -o Вишал

Входной файл " выходного файла" FCS NAME является "

нет выхода не приходит .. пожалуйста, помогите.

+0

Пожалуйста, помогите .. Ваша помощь приветствуется. –

ответ

3

Исключить 0-й элемент от sys.argv. т.е. имя программы.

import getopt 
import sys 
try: 
    opts, args = getopt.getopt(
     sys.argv[1:], 
     "i:o:p:", 
     ["ifile=","ofile=","pcsfile="]) 
except getopt.GetoptError,msg: 
    print "error : %s" % msg 

inputfile, outputfile, FCSNAME = None, None, None 
for opt, arg in opts: 
    print opt, arg 
    if opt in ("-i", "--ifile"): 
     inputfile = arg 
    elif opt in ("-o", "--ofile"): 
     outputfile = arg 
    elif opt in ("-p", "--pcsname"): 
     FCSNAME = arg 

print "inputfile %s" % inputfile 
print "outputfile %s" % outputfile 
print "FCSNAME %s" % FCSNAME 

Также у вас есть варианты, которые требуют аргументов, поэтому необходимо обращаться с теми, с помощью : (двоеточие)

Я надеюсь, что это помогает.

0

0-й элемент списка sys.argv - это имя программы, которую getopt не нравится. Поэтому просто удалите его, а затем передайте argv его в getopt.

import sys 
import getopt 

def printUsage(): 
     print "Usage" 

def parseCommandLine(argv=[]): 
    argv = argv[1:] 
    inputfile = '' 
    outputfile = '' 
    PCSNAME = '' 

    try: 
      opts, args = getopt.getopt(argv, 'hi:o:p:') 
    except getopt.GetoptError,msg: 
     printUsage() 
     print "-E-Badly formed command line vishal!" 
     print " ",msg 
     sys.exit(1) 

    #Processing command line arguments 
    #print opts 
    for opt, arg in opts: 
     opt = opt.lower() 

     # Help 
     if opt in ("-h", "--help"): 
      printUsage() 
      sys.exit() 
     elif opt in ("-i", "--ifile"): 
      inputfile = arg 
     elif opt in ("-o", "--ofile"): 
      outputfile = arg 
     elif opt in ("-p", "--pcsname"): 
      PCSNAME = arg 
     if opt in ("-v"): 
      VERBOSE = 1 
    print 'Input file is "', inputfile 
    print 'Output file is "', outputfile 
    print 'PCS NAME is "', PCSNAME 

parseCommandLine(sys.argv) 
Смежные вопросы