Uso de la barra de progreso de Python y generación de código QR

1. Barra de progreso

1. Date cuenta con el módulo de tiempo

import time
for i in range(0, 101, 2):
	time.sleep(0.3)
	num = i // 2
	if i == 100:
		process = "\r[%3s%% ]: |%-50s|\n" % (i, '#' * num)
	else:
		process = "\r[%3s%% ]: |%-50s|" % (i, '#' * num)
	print(process, end='', flush=True)

2. Utilice el módulo tqdm para realizar la
instalación.

pip install tqdm

②Procesamiento de objetos iterativos

from tqdm import tqdm,trange
import time
 
#for i in tqdm(range(100)):
for i in trange(100):
  time.sleep(0.1)
  pass

Inserte la descripción de la imagen aquí

③Observe los datos procesados A través del set_descriptionmétodo proporcionado por tqdm, puede ver los datos procesados ​​en tiempo real

from tqdm import tqdm
import time
 
pbar = tqdm(["a","b","c","d"])
for c in pbar:
  time.sleep(1)
  pbar.set_description("Processing %s"%c)

Inserte la descripción de la imagen aquí
④Configure manualmente el progreso del procesamiento.
A través del updatemétodo, se puede controlar el progreso de cada actualización de la barra de progreso

from tqdm import tqdm
import time
 
#total参数设置进度条的总长度
with tqdm(total=100) as pbar:
  for i in range(100):
    time.sleep(0.05)
    #每次更新进度条的长度
    pbar.update(1)

Además de usar with, también puede usar otro método para lograr el efecto anterior

from tqdm import tqdm
import time
 
#total参数设置进度条的总长度
pbar = tqdm(total=100)
for i in range(100):
  time.sleep(0.05)
  #每次更新进度条的长度
  pbar.update(1)
#关闭占用的资源
pbar.close()

Inserte la descripción de la imagen aquí
⑤Customize la información en pantalla la barra de progreso Establecer la información en pantalla la barra de progreso
por set_descriptiony set_postfixmétodo

from tqdm import trange
from random import random,randint
import time
 
with trange(100) as t:
  for i in t:
    #设置进度条左边显示的信息
    t.set_description("GEN %i"%i)
    #设置进度条右边显示的信息
    t.set_postfix(loss=random(),gen=randint(1,999),str="h",lst=[1,2])
    time.sleep(0.1)

Inserte la descripción de la imagen aquí

from tqdm import tqdm
import time
 
with tqdm(total=10,bar_format="{postfix[0]}{postfix[1][value]:>9.3g}",
     postfix=["Batch",dict(value=0)]) as t:
  for i in range(10):
    time.sleep(0.05)
    t.postfix[1]["value"] = i / 2
    t.update()

Inserte la descripción de la imagen aquí
⑥Barra de progreso de ciclo de múltiples capas

from tqdm import tqdm
import time
 
for i in tqdm(range(20), ascii=True,desc="1st loop"):
  for j in tqdm(range(10), ascii=True,desc="2nd loop"):
    time.sleep(0.01)

Inserte la descripción de la imagen aquí
⑦Barra de progreso de procesos
múltiples Cuando se utilizan procesos múltiples para procesar tareas, puede ver el estado de procesamiento de cada tarea de proceso en tiempo real a través de tqdm

from time import sleep
from tqdm import trange, tqdm
from multiprocessing import Pool, freeze_support, RLock
 
L = list(range(9))
 
def progresser(n):
  interval = 0.001 / (n + 2)
  total = 5000
  text = "#{}, est. {:<04.2}s".format(n, interval * total)
  for i in trange(total, desc=text, position=n,ascii=True):
    sleep(interval)
 
if __name__ == '__main__':
  freeze_support()  # for Windows support
  p = Pool(len(L),
       # again, for Windows support
       initializer=tqdm.set_lock, initargs=(RLock(),))
  p.map(progresser, L)
  print("\n" * (len(L) - 2))

Inserte la descripción de la imagen aquí
⑧ Usa tqdm en pandas

import pandas as pd
import numpy as np
from tqdm import tqdm

df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))

tqdm.pandas(desc="my bar!")
df.progress_apply(lambda x: x**2)

Inserte la descripción de la imagen aquí
⑨ Utilice la barra de progreso de forma recursiva

from tqdm import tqdm
import os.path
 
def find_files_recursively(path, show_progress=True):
  files = []
  # total=1 assumes `path` is a file
  t = tqdm(total=1, unit="file", disable=not show_progress)
  if not os.path.exists(path):
    raise IOError("Cannot find:" + path)
 
  def append_found_file(f):
    files.append(f)
    t.update()
 
  def list_found_dir(path):
    """returns os.listdir(path) assuming os.path.isdir(path)"""
    try:
      listing = os.listdir(path)
    except:
      return []
    # subtract 1 since a "file" we found was actually this directory
    t.total += len(listing) - 1
    # fancy way to give info without forcing a refresh
    t.set_postfix(dir=path[-10:], refresh=False)
    t.update(0) # may trigger a refresh
    return listing
 
  def recursively_search(path):
    if os.path.isdir(path):
      for f in list_found_dir(path):
        recursively_search(os.path.join(path, f))
    else:
      append_found_file(path)
 
  recursively_search(path)
  t.set_postfix(dir=path)
  t.close()
  return files
 
find_files_recursively("E:/")

Inserte la descripción de la imagen aquí

Nota: Al usar tqdm para mostrar la barra de progreso, si el código existe, printpuede causar la salida de varias líneas de barra de progreso. En este momento print语句改为tqdm.write, el código es el siguiente

for i in tqdm(range(10),ascii=True):
  tqdm.write("come on")
  time.sleep(0.1)

3. Barra de progreso de visualización de comandos de Linux
①No use tqdm

$ time find . -name '*.java' -type f -exec cat \{} \; | wc -l
263866

real	0m3.562s
user	0m1.399s
sys	0m2.351s

②Utilice tqdm

##安装
git地址:https://github.com/tqdm/tqdm
pip install tqdm


$ time find . -name '*.java' -type f -exec cat \{} \; | tqdm | wc -l
263866it [00:02, 103691.49it/s]
263866

real	0m2.653s
user	0m1.734s
sys	0m1.280s

③Especifique los parámetros de tqdm para controlar la barra de progreso

$$ find . -name '*.java' -type f -exec cat \{} \; | tqdm --unit loc --unit_scale --total 263866 >> /dev/null
100%|███████████████████████████████| 264k/264k [00:02<00:00, 112kloc/s]


###Backing up a large directory
$ tar -zcf - ~/ | tqdm --bytes --total `du -sb ./ | cut -f1`  > backup.tgz
 85%|██████████████████▋                   | 321M/379M [00:10<00:01, 32.3MB/s]

2. Código QR

1. Instalar dependencias

pip install qrcode

2. Ejemplo sencillo

import qrcode

# 二维码内容
url = "https://movie.douban.com/"
# 生成二维码
img = qrcode.make(data=url)
# 直接显示二维码
img.show()
# 保存二维码为文件
img.save("示例图片.jpg")

El código QR generado es el siguiente:
Inserte la descripción de la imagen aquí
3. Establezca el color y otros estilos del código QR

import qrcode

# 实例化二维码生成类
qr = qrcode.QRCode(border=2)
# 设置二维码数据
url = "https://movie.douban.com/"
qr.add_data(data=url)
# 启用二维码颜色设置
qr.make(fit=True)
img = qr.make_image(fill_color="blue", back_color="white")

# 显示二维码
img.show()

Genere un código QR azul:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_37886429/article/details/109284355
Recomendado
Clasificación