Python - Как заставить tqdm печатать одну строку индикатора в оболочке? - PullRequest
1 голос
/ 02 апреля 2020

Я написал сценарий анимации для Python и использовал Pyinstaller для создания файла .exe. Код отлично работает в PyCharm, то есть отображает только одну строку индикатора выполнения. Однако, когда я открываю .exe, который, по моему мнению, работает в командной строке, он отображает несколько строк. Я на Windows 10 и Python 3.7. Эту проблему легко воспроизвести на моем P C. Ниже приведен пример.

import matplotlib.pyplot as plt
import matplotlib.animation as ani
import numpy as np
import pandas as pd
from tqdm import tqdm


fig = plt.figure(figsize=(20,12))
ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2, rowspan=2)
def test(i):
    data = np.random.normal(0, 1, i+1)
    pd.DataFrame(data).plot(kind='bar', ax=ax1)


Writer = ani.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1000)

anim = ani.FuncAnimation(fig=fig, func=test, frames=tqdm(range(10), initial=1, position=0), interval=200, blit=False)
anim.save('textmovie.mp4', writer=writer)

Если я запускаю его в PyCharm, это выглядит так. enter image description here

После того, как я использую Pyinstaller для генерации .exe, это выглядит следующим образом. enter image description here

Я искал похожие проблемы здесь. Похоже, люди предлагают использовать position = 0, но это не работает для меня. Я что-то пропускаю в своем коде?

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

...