Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2012 18:02:35

Radiy
От:
Зарегистрирован: 2010-12-12
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Имитация ввода с клавиатуры

Есть желание написать скрипт, который имитировал бы набор пользователем всяких строчек, т.е. как бы печатал по буквам текст.
Такой код выдаёт всё и сразу по завершению общего времени ожидания:

#! /usr/bin/python 

from time import sleep
s='Hellow World'
for i in range(len(s)):
print(s[i]),
sleep(0.15)
p.s. есть аналог “print(),” , который писал бы без пробелов после каждой буквы?



Отредактировано (Янв. 24, 2012 18:04:02)

Офлайн

#2 Янв. 25, 2012 03:33:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Имитация ввода с клавиатуры

Radiy
Есть желание написать скрипт, который имитировал бы набор пользователем всяких строчек, т.е. как бы печатал по буквам текст.
Такой код выдаёт всё и сразу по завершению общего времени ожидания:

#! /usr/bin/python 

from time import sleep
s='Hellow World'
for i in range(len(s)):
print(s[i]),
sleep(0.15)
p.s. есть аналог “print(),” , который писал бы без пробелов после каждой буквы?
Объясните, бога ради, зачем так делать?
Гвидо с вас рыдает
#Щито это???
for i in range(len(s)):
print(s[i])
#Зер Гут!!!
for i in s:
print(i)



Офлайн

#3 Янв. 25, 2012 04:39:43

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Имитация ввода с клавиатуры

Radiy
Такой код выдаёт всё и сразу по завершению общего времени ожидания
Смотря в какой версии, во второй он плавно по буквам выплевывал б, но заметил как вызывается принт понял что у вас третья. Протестировал на третьей действительно, я точно не знаю но видимо все в буфер закидывается и когда скрипт только завершается возвращает весь буфер в cmd. Вам либо использовать вторую ветку если не критично. А если обязательно на третьей, то наверное запуск в другом потоке поможет (не тестировал).

Radiy
есть аналог “print(),” , который писал бы без пробелов после каждой буквы?
Зачем искать аналог, принт тож умеет это делать

print(value, …, sep=' ‘, end=’\n', file=sys.stdout)

Вообще то он по умолчанию кидает перевод строки но заменив end='' будет вам счастье

Офлайн

#4 Янв. 25, 2012 05:45:59

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Имитация ввода с клавиатуры

Piton23
Смотря в какой версии, во второй он плавно по буквам выплевывал б, но заметил как вызывается принт понял что у вас третья. Протестировал на третьей действительно, я точно не знаю но видимо все в буфер закидывается и когда скрипт только завершается возвращает весь буфер в cmd. Вам либо использовать вторую ветку если не критично. А если обязательно на третьей, то наверное запуск в другом потоке поможет (не тестировал).
Почитайте про буфер ввода/вывода и про метод flush() для файла (подсказка: sys.stdout - тоже файловый объект)



Офлайн

#5 Янв. 25, 2012 06:52:33

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Имитация ввода с клавиатуры

ну либо так, так даже легче, забыл про sys.stdout :)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version