Форум сайта python.su
0
Решил попробовать Python 3 и столкнулся с мистическим порядком выполнения кода.
Вот код простейшей функции:
def AUTO_DEL_VIRUSES(log_file):
global LOG
log = open(LOG, "r")
i = 0
for line in log.readlines():
i += 1
if "/" in line and i > 4:
raw_infect_file = line.split()
infect_file = raw_infect_file[0]
infect = raw_infect_file[1:]
print(line) #До этого места все ок
print("Удалить инфицированный файл? |", infect_file) #Вместо этой строки, дважды выполняется следующая строка и лишь потом эта строка.
yes_no = input("Enter=ok|n=not|exit=exit") #Эта строка выполняется первее предыдущей. Что за дела?
.....
OS: Mandriva Linux
PYTHON: 3.1
IDE: WingIDE 101
CPU: Intel i3
Отредактировано (Сен. 24, 2010 21:08:40)
Офлайн
6
поставит все на свои места:
sys.stdout.flush()
Офлайн
0
truporez спасибо большое!
Еще бы понять почему так происходит?
Офлайн
6
потому что stdout имеет буфер, который очищается посредством flush.
Офлайн
0
truporez, помоги так как нечего не понемаю и принципиально хочу разобраться!
твой код к сожалению не помог.
Попрежнему сначало выполняется:
yes_no = input("Enter=ok|n=not|exit=exit")print(line)
print("Удалить инфицированный файл? |", infect_file)
Отредактировано (Сен. 24, 2010 21:06:51)
Офлайн
0
Все, разобрался! Был не правильный алгоритм) так, что все выполнялось как и должно….
Офлайн