Я новичок в 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:])