Сообщение консоли не начинается с новой строки при использовании индикатора выполнения tqdm в python на windows в cmd.exe - PullRequest
0 голосов
/ 17 июня 2020

Основная проблема:

У меня в cmd.exe отображается индикатор выполнения, который, кажется, имеет курсор в конце строки индикатора выполнения.

Arrival selected for <Cotton>. Hit <Enter> to start:
Iterations:   9%|##7                          | 24/254 [02:04<16:43,  4.36s/it]_

Когда из сценария печатается сообщение, оно начинается с конца строки индикатора выполнения с одним символом на нем, а остальные под ним, например:

Arrival selected for <Cotton>. Hit <Enter> to start:
Iterations:   9%|##7                          | 24/254 [02:04<16:43,  4.36s/it]C
an't update config.json

Что я пробовал до сих пор:

Я попытался использовать ascii = "123456789 #" и использовать ncols = 40, думая, что это может быть что-то связанное с шириной, но безрезультатно. Форма cmd.exe размером windows имеет ширину - 80 и высоту - 27, и мой код выглядит так:

pbar = tqdm(total = 10, desc = "Iterations", mininterval = 1)
for i in range(1, 10):
    somefunction(x, y)
    pbar.update()
pbar.close()

Использование bar.set_postfix_str для добавления символа новой строки, также попытался добавить дополнительный пробел в строке с pbar.write (""), но он вводит только дополнительную строку между напечатанным сообщением, например:

Arrival selected for <Cotton>. Hit <Enter> to start:
Iterations:   9%|##7                          | 24/254 [02:04<16:43,  4.36s/it]C

an't update config.json

Сообщения поступают из somefunction (), которые используют input () для ввода пользовательского ввода иногда поэтому я не могу использовать pbar.write (). Я вижу, что есть другие, показывающие аналогичный результат, поэтому я думаю, что он работает так, как задумано: Python индикатор выполнения с использованием tqdm PS: Но моя проблема не в нескольких индикаторах выполнения

Одно решение было для префикса всех операторов печати с "\ n", что я хочу, но я хотел знать, есть ли возможность исправить это, установив некоторые параметры для самого tqdm. Если я смогу просто заставить этот курсор заканчиваться на новой строке, я думаю, это исправит.

Обновление 20-июн-2020:

Удалось исправить часть этого, выполнив функцию:

def prompy_user(msg_string:str):
    logging.info("User input: " + msg_string)
    winsound.PlaySound(os.path.join('Media\\Calligraphy\\', \
                                    'Windows Notify.wav'), winsound.SND_FILENAME)
    input(" " + msg_string)

Но по-прежнему существует проблема с некоторыми сообщениями от chrome или chromedriver, которые начинаются с конца строки tqdm:

State <DN#7>:  63%|████████████████?          | 321/511 [31:44<14:03,  4.44s/it][
11012:12676:0618/171507.109:ERROR:ppapi_thread.cc(310)] Failed to load Pepper mo
dule from internal-not-yet-present (error: 126)
State <MH#19>:  65%|████████████████?         | 333/511 [32:53<22:28,  7.58s/it]

Как остановить появление этих сообщений? Это мой установочный код:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--purge-memory-button')
chrome_options.add_argument('--disable-logging')
chrome_options.add_argument('--aggressive-cache-discard')
chrome_options.add_argument('--disable-cache')
chrome_options.add_argument('--disable-local-storage')
chrome_options.add_argument('--disable-application-cache')
...