Как мне заставить цикл попыток работать для загрузки текстового файла?

#python

#python

Вопрос:

Однако я создал код для вывода текстового файла в формате csv, когда я прошу пользователя ввести doc. номер, мой цикл попыток не будет проверять документ. Вместо этого он застрял, запрашивая имя файла. Однако, если я удалю первую if-функцию (if choice==»»), она будет работать, мне понадобятся эти if-функции позже. Код выглядит следующим образом

 def menu2(choice1):
while True:
    if choice1=="":
        choice1=float(input("""33[1;36;48mNow you have the following choices:
                          0: Set new directory
                          1: Load data
                          5: Quit
                          
                33[1;37;48mPlease enter a number: """))
        print()
    elif choice1 == 0:
        menu1()
    elif choice1 == 1:
        print("33[1;36;48mTo load the data, the data document name needs to be given with "".txt"" at the end")
        choice2=input("""
                33[1;37;48mPlease enter the name of the document: """)
        print()
        try:
             pd.read_csv(choice2, sep=" ", header=None)
        except:
             print("Error, could not find data in directory. Files in directory is listed below:")
             print(os.listdir(os.getcwd()))
             continue
        menu3("")
    elif choice1 == 5:
        print("Thanks for using the data analysis program, bye")
        break
    else:
        print(red "Not a valid option, please try again" white)
        print()
        continue
prevData=pd.read_csv(choice2, sep=" ", header=None)
return prevData
  

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

1. «цикл попыток»? try не запускает цикл.

2. Я думаю, вам не мешало бы ознакомиться с несколькими базовыми руководствами по Python. Вы явно на вершине if .. elif .. else структуры, но это не золотой молоток, и не все гвозди. Попробуйте пошагово просматривать код построчно, отслеживая значения различных переменных и выясняя, почему код делает то, что он делает, и как вы хотите, чтобы этот поток изменился. Если есть какая-то конкретная часть, которую вы не понимаете, спросите об этом — общий вопрос «почему моя программа не работает» — не очень хороший вопрос, поскольку вы вряд ли получите нужный вам ответ.

Ответ №1:

создайте переменную loop = True и измените while True ее на while loop . Внутри инструкции try, после чтения csv, вы можете сделать loop = False , и это разорвет цикл.