Пакетное программирование = Как сделать так, чтобы символы отображались медленно, когда я эхо, как если бы вы печатали их

Мне приходят три возможности:

  • Модуль работает только для определенных версий python (например, 3.5, но не 3.6).
  • Путь, в котором находится ваш модуль в настоящий момент не отображается в sys.path.
  • Класс, который вы хотите использовать, должен быть указан при импорте модуля, потому что он не указан в __init__.py самого модуля.

Насколько я могу судить, только первый вариант может вызвать вашу проблему. Тем не менее, я бы быстро проверил

import sys
sys.path

и в случае, если правильный путь действительно отсутствует.

sys.path.append('PathToModule')
1
задан k9-primetime 19 January 2019 в 16:58
поделиться

2 ответа

В зависимости от содержимого строки, вам может подойти что-то простое.

@Echo Off

Set "STRING=Try this, unfortunately it is untested!"

For /F %%A In ('"Prompt $H&For %%B In (1) Do Rem"') Do Set "BS=%%A"

For /F Delims^=^ EOL^= %%A In ('"(CMD/U/CEcho=%STRING%)|Find /V """'
) Do Set/P "=a%BS%%%A"<Nul & PathPing 127.0.0.1 -n -q 1 -p 100 1>Nul

Вы можете изменить скорость отображения букв, отрегулировав число 100 при необходимости. Возможно, попробуйте 200 для медленной печати, а в 50 для ускорения!

0
ответ дан Compo 19 January 2019 в 16:58
поделиться

попробуйте это:

@echo off
:typewriter
setlocal enableDelayedExpansion
set "string=%~1"
call ::strlen "%string%#" len
if "%~2" neq "" (
    set /a _timeout=%~2
) else (
    set _timeout=500
)

set "carret=^"
for /l %%a in (0,1,%len%) do (

    set "letter=!string:~%%a,1!"


    for /f %%# in (">" "<" "|" "&") do (
        if "!prev!" equ "%%#" do set "prev=^^%%#"
    )

    if "!letter!" equ " " (
        set "suffix=!suffix! "
    ) 


    ping 192.0.2.0 -n 1 -w %_timeout% 1>nul 2>&1
    if "!prev!" neq " " (
        break|set /p=!carret!!prev!!suffix!
        set "suffix="
    )
    set "prev=!letter!"
)

endlocal 
exit /b 0 %errorlevel%

:strlen
Setlocal EnableDelayedExpansion
:: strLen String [RtnVar]
::             -- String  The string to be measured, surround in quotes if it contains spaces.
::             -- RtnVar  An optional variable to be used to return the string length.
Set "s=#%~1"
Set "len=0"
For %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
  if "!s:~%%N,1!" neq "" (
    set /a "len+=%%N"
    set "s=!s:~%%N!"
  )
)
Endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
Exit /b

он принимает два аргумента - строку, которую вы хотите набирать медленно, и время ожидания в миллисекундах между каждой буквой. Пример (если вы называете это typewriter.bat):

call typewriter.bat "hello world" 200

просто помните, что восклицательные знаки не будут напечатаны из-за задержки расширения. (но вы можете использовать специальные символы, такие как >, |, &, <)

Для дальнейшего ознакомления проверьте их: strlen , подстрока [118 ], сон в миллисекундах

0
ответ дан npocmaka 19 January 2019 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: