Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 24, 2010 18:31:49

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный порядок выполнения кода!

Решил попробовать 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") #Эта строка выполняется первее предыдущей. Что за дела?
.....
Предполагаю что строки выполняются параллельно(CPU i3) или косяк в интерпретаторе…. Чего скажете?

OS: Mandriva Linux
PYTHON: 3.1
IDE: WingIDE 101
CPU: Intel i3



Отредактировано (Сен. 24, 2010 21:08:40)

Офлайн

#2 Сен. 24, 2010 18:51:17

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Не понятный порядок выполнения кода!

поставит все на свои места:

sys.stdout.flush()



Офлайн

#3 Сен. 24, 2010 19:02:04

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный порядок выполнения кода!

truporez спасибо большое!
Еще бы понять почему так происходит?



Офлайн

#4 Сен. 24, 2010 19:51:00

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Не понятный порядок выполнения кода!

потому что stdout имеет буфер, который очищается посредством flush.



Офлайн

#5 Сен. 24, 2010 21:06:10

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный порядок выполнения кода!

truporez, помоги так как нечего не понемаю и принципиально хочу разобраться!
твой код к сожалению не помог.

Попрежнему сначало выполняется:

 yes_no = input("Enter=ok|n=not|exit=exit")
причем 2-а раза, подряд!! вообще бред какой то…

и лишь потом выполняется:

print(line)                                                                                          
print("Удалить инфицированный файл? |", infect_file)



Отредактировано (Сен. 24, 2010 21:06:51)

Офлайн

#6 Сен. 25, 2010 13:39:35

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный порядок выполнения кода!

Все, разобрался! Был не правильный алгоритм) так, что все выполнялось как и должно….



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version