#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
равным 02. да, я забыл включить его. Но у него есть гейл=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. я попробовал, и это сработало! ты спас меня, большое тебе спасибо!