Использование разделенных аргументов в других функциях

#python #for-loop #split

#python #for-цикл #разделение

Вопрос:

Предполагается, что код принимает строку из нескольких аргументов и разделяет их с помощью «Split ()». Он делает это, но передает только первый аргумент в «Контрольный список ()». Поэтому, если я наберу «1 2 4», он передаст только «1» в контрольный список. Все остальное работает так, как должно.

 import re            

def CheckList(Start):
    DoIt = 0
    s = int(Start)
    End = s   1
    End = str(End)
    for PodCheck in F.readlines():

        if re.match('Pod'   End, PodCheck.strip()):
            DoIt = 0

        if re.match('Pod'   Start, PodCheck.strip()):
            DoIt = 1

        if DoIt == 1:
            print PodCheck,   

    return

def Split(P):
    Pods = P.split()
    for Pod in Pods:
        CheckList(Pod)

    return

F = open("C:UsersUserDesktopIP_List.txt")

Pod = raw_input('What pod number would you like to check?: ')
Split(Pod.strip())
print 'Done'
  

Комментарии:

1. Откуда вы знаете, что он передает только первый аргумент, а не просто пропускает данные во время for PodCheck in... ?

2. Именно в этом я и полагал ошибку. Оказывается, я был очень неправ.

Ответ №1:

Ваша проблема прямо здесь:

 for PodCheck in F.readlines():
  

Первый вызов CheckList использует все данные F . Последующие вызовы Checklist пропускают for цикл, потому что читать больше нечего.

Поэтому после открытия F вы должны прочитать все свои данные. Не меняя слишком много вашего кода, я бы добавил это после того, как вы откроете свой файл:

 F_lines = F.readlines()
  

И измените цикл на CheckList

 for PodCheck in F_lines:
  

Комментарии:

1. Вы герой, сэр. Спасибо!

2. Проблема заключалась в том, что вы сказали. Чтобы исправить это, я открыл и закрыл файл в CheckList().