Ввод CSV-файла Python, проверка не работает

#python #python-3.x #csv #validation

Вопрос:

Я попытался распечатать переменную Гейл, и она правильно присваивает значения. Я не могу понять, почему моя программа останавливается, если я ввожу несуществующий идентификатор.

     os.system("clear")
    print('tSEARCH AND VIEW FILEn')
    gayle=0

    file_input = input('Search ID Number: ')
    proj = io.open('all_projects.csv', 'r')        
    while True:
        data = proj.readline()
        if file_input in data:
            txt = data
            gayle  = 1
            break
    proj.close()
    
    if gayle > 0:
        list2 = txt.split(",")
        i = Preview(list2)
        i.view()
        print(gayle)
        try_again('Search file again?','Invalid input.',2)
    elif (gayle == 0):
        print("Not exist")
 

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

1. вам нужно где-то установить начальное значение gayle равным 0

2. да, я забыл включить его. Но у него есть гейл=0

3. попробуйте напечатать гейл вне условия if

4. Просто уточняю, когда вы говорите, что ваша программа останавливается, вы имеете в виду, что она выводит «Не существует» и останавливается или это выглядит так, как будто ваша программа зависает ? поскольку у вас, похоже, нет никакой проверки в вашем цикле while true, чтобы прерваться в конце файла

5. Вы имеете в виду, почему это не прекращается? Вместо того, чтобы использовать цикл while, я бы предположил, что вы хотите повторить каждую строку, используя, например. for line in open("all_projects.csv", "r"): ... Вы, вероятно, тоже хотите взглянуть на csv модуль

Ответ №1:

Вам нужно только перебирать строки в вашем файле, вы можете сделать это open() с помощью функций readlines() и. Измените чтение файла и цикл на следующее, и это должно сработать

 proj = open('all_projects.csv', 'r')
Lines = proj.readlines()
proj.close()

for line in Lines:
    if file_input in line:
            txt = data
            gayle  = 1
            break
 

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

1. я попробовал, и это сработало! ты спас меня, большое тебе спасибо!