Я столкнулся с ошибкой при работе с циклом while. Я могу ввести число, которое хочу запустить, и результаты правильно записаны в соответствующий файл .CSV. Как только секция для этого номера будет запущена, она спросит, хочу ли я попробовать еще раз с новым номером. Он запускает новый числовой код и создает новый .CSV, но размер файла остается равным 0 КБ. Я думал, что это связано с закрытием файла после завершения, но я написал там f # .close ().
Пример: выберите номер 1, код для # 1 запускается и сохраняет .CSV правильно, выберите Да для другого запуска и нового номера (# 2), код # 2 выполняется, но не закрывается правильно, таким образом, не сохраняя никакой информации для второго CSV.
Это происходит независимо от того, какой номер я выберу первый или второй. (например: сначала выберите 3, 3 работает нормально и сохраняет нормально. Затем выберите 2 и запускается, но не сохраняет правильно.)
Вот мой текущий код:
f1 = file('1.csv', 'rb')
f2 = file('2.csv', 'rb')
f3 = file('3.csv', 'rb')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.reader(f3)
number = raw_input("Enter number: ")
while True:
if number == "1":
f4 = file('No_1_Results.csv', 'wb')
c4 = csv.writer(f4)
<snip> #do stuff here
print "Took ", time.time() - start, "seconds."
f4.close()
reset_answer = raw_input("Again? Type Y or N : ")
if reset_answer == ("n" or "N"):
print "Bye! from #1"
break
if reset_answer == ("y" or "Y"):
number = raw_input("Enter new number #: ")
continue
if reset_answer != ("n" or "N" or "y" or "Y"):
print "Y or N only allowed. Try again."
continue
if number == "2":
f5 = file('No_2_Results.csv', 'wb')
c5 = csv.writer(f5)
<snip> #do stuff here
print "Took ", time.time() - start, "seconds."
f5.close()
reset_answer = raw_input("Again? Type Y or N : ")
if reset_answer == ("n" or "N"):
print "Bye! from #2"
break
if reset_answer == ("y" or "Y"):
number = raw_input("Enter new number #: ")
continue
if reset_answer != ("n" or "N" or "y" or "Y"):
print "Y or N only allowed. Try again."
continue
if number =="3":
f6 = file('No_3_Results.csv', 'wb')
c6 = csv.writer(f6)
<snip> #do stuff here
print "Took ", time.time() - start, "seconds."
f6.close()
reset_answer = raw_input("Again? Type Y or N : ")
if reset_answer == ("n" or "N"):
print "Bye! from #3"
break
if reset_answer == ("y" or "Y"):
number = raw_input("Enter new number #: ")
continue
if reset_answer != ("n" or "N" or "y" or "Y"):
print "Y or N only allowed. Try again."
continue
if number is not "1" or "2" or "3":
print "Invalid number selected."
number = raw_input("Please choose a number: ")
continue
f1.close()
f2.close()
f3.close()
Примечание : Использование Python 2.6 в Windows / все еще изучаем Python -