Python - Проблемы с блокировкой кода в циклах - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в python и имею некоторые проблемы с блокировкой.У меня есть скрипт, который я звоню с опциями.Я могу видеть входящие аргументы, однако я не смог заставить программу работать правильно.В приведенном ниже примере кода я пытаюсь получить аргументы, а затем запустить фрагмент кода после комментария «#if ip address не определен. Qpid-route не будет работать».Если я изменяю отступ после комментария, я получаю ожидаемый отступ или неожиданные ошибки отступа.

Проблема в том, что способ, которым код в настоящее время является, будет запускать elif opt in ("-i", "-ipaddress "): code, а затем продолжится и пропустит код до конца, затем вернется и запустит код цикла -s, а затем повторно запустит код до конца.

Чтобы исправить это, я попробовал команду break или continue, и все, что я получаю, это ошибки отступа, независимо от того, с каким уровнем я его выравниваю.Может ли кто-нибудь помочь мне правильно отформатировать это так, чтобы я мог извлечь значения ipaddress и scac, которые я извлекаю из аргументов, и затем запустить код после комментария «#if ip address не определен, qpid-route не будет работать» какотдельный блок.

import re
import os
import sys
import getopt
import pdb

ipaddress = ""
scac = ''

def main(argv):
    #print argv
    ipaddress = ""
    scac = ''
    pdb.set_trace()
    try:
        opts, args = getopt.getopt(argv,"hi:s:",["ipaddress=","scac="])
        if not opts: # if no option given 
            print 'usage test.py -i <ipaddress> -s <scac>'
            sys.exit(2)
    except getopt.GetoptError:
        print 'test.py -i <ipaddress> -s <scac>'
        sys.exit(2)
    for opt, arg in opts:
        if opt == '-h':
            print 'FedConnectStatus.py -i <iobipaddress> -s <scac>'
            sys.exit() # it should be on level of if
        elif opt in ("-i", "--ipaddress"):
            ipaddress = arg
            #break
            #continue
        elif opt in ("-s", "--scac"):
            scac = arg

    #if ip address is not defined qpid-route will not work
    if not ipaddress:
        print 'ip address needed'
    else:        
          print(os.getcwd())
        #If no scac is given grab every federated connection and report  
    if not scac:
           # open file to read
            f = file('qpid.txt', 'r')
            nameList = []
            statusList = []
            #skip first 4 lines
            for i in range(3): f.next() # skip first four lines
            # iterate over the lines in the file
            for line in f:
                    # split the line into a list of column values
                    columns = line.split(None, 5)
                    # clean any whitespace off the items
                    columns = [col.strip() for col in columns]
                    # ensure the column has at least one value before printing
                    if columns:
                        #print "Name", columns[0]  # print the first column
                        #print "Status", columns[4] # print the last column
                        nameList.append(columns[0])
                        statusList.append(columns[4])
                        #print name
                        #print status
        #else:

    print nameList
    print statusList

#if __name__ == "__main__":
main(sys.argv[1:])

1 Ответ

0 голосов
/ 10 мая 2018

Этот оператор if not scac: в строке 40 и ниже имеет отступ, отличный от отступа остального кода.

Вы увидите, что строка 38 также не соответствует отступу выше, если.

...