首页 > 编程语言 >Personal utils in Python

Personal utils in Python

时间:2023-07-11 21:57:01浏览次数:67  
标签:bar name Personal utils Python def import logger dir


# -*- coding: utf-8 -*-

import os
import sys
import shutil
from time import perf_counter
from collections import defaultdict
from datetime import timedelta
from typing import Sequence, List, Dict, Hashable, Callable

from config.common import DEBUG  # 项目配置
from logger import base_logger  # 日志模块

utils_logger = base_logger.getChild('utils')

def progressbar(it: Sequence, name: str = 'In Progress', bar_length: int = 20, file=sys.stdout, verbose=False):
    def show(i):
        total = len(it)
        bar_progress = bar_length * i // total
        consumedsec = stepsec - startsec
        file.write(
            f'{name} {it[i-1] if verbose else ""}: '
            f'[{"#" * bar_progress}{"." * (bar_length - bar_progress)}] '
            f'{i}/{total} ({i / total:.2%}) '
            f'Time consumed: {timedelta(seconds=round(consumedsec))}; '
            f'Time left (approx.): {timedelta(seconds=round((total-i) / (i/consumedsec))) if i != 0 else "--"}\r'
        )
        file.flush()

    startsec = stepsec = perf_counter()
    show(0)
    for i, item in enumerate(it, start=1):
        yield item
        stepsec = perf_counter()
        show(i)
    file.write("\n")
    file.flush()


def overwrite_dir(dir_name: str):
    if os.path.isdir(dir_name):
        shutil.rmtree(dir_name)
    os.makedirs(dir_name)


def makedirs_if_not_exists(dir_name: str):
    if not os.path.isdir(dir_name):
        os.makedirs(dir_name)


def group_listofdict_bykey(entries: List[Dict], k: Hashable):
    result = defaultdict(list)
    for entry in entries:
        result[entry[k]].append(entry)
    return result


def debug_run(func: Callable, *args, **kwargs):
    if DEBUG:
        return func(*args, **kwargs)


def timer(func: Callable):
    def wrapper(*args, **kwargs):
        start = perf_counter()
        res = func(*args, **kwargs)
        utils_logger.debug('%.3f sec taken by function %s',
                    perf_counter() - start, func.__name__)
        return res
    return wrapper

标签:bar,name,Personal,utils,Python,def,import,logger,dir
From: https://www.cnblogs.com/LexLuc/p/17546030.html

相关文章

  • Python抓取音乐音乐
    #encoding=utf8importrequestsfrombs4importBeautifulSoupimporturllib.requestheaders={'Referer':'http://music.163.com/','Host':'music.163.com','User-Agent':'Mozilla/5.0(Wi......
  • 请不要再用被淘汰的Python库了,这几个新的更具优势!
    随着每个Python版本的发布,都会添加新模块,并引入新的更好的做事方式,虽然我们都习惯了使用好的旧Python库和某些做事方式,但现在也时候升级并利用新的和改进的模块及其特性了。Pathlib而不是OSpathlib绝对是Python标准库中最近添加的更大的内容之一,自Python3.4以来,它一......
  • django python manage.py migrate 后报错字段长度超了 django.db.utils.OperationalE
     现象:在models.py将CharField字段的maxlength=修改后,执行ythonmanage.pymigrate 报错django.db.utils.OperationalError:(1118 'Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Thisincludes storageoverhead,c......
  • python 之 mysql8 基础
    一、表操作1、查看当前所在的库>selectdatabase():+------------+|database()|+------------+|oldboy|+------------+2、usedatabase选择库3、查看表>showtables 查看有几个表>showcreatetablestudent; 查看创建表的过程+---------+-----------......
  • 使用Python读取图片
    一、Python学习两大道具1.dir()工具作用:支持打开package,看到里面的工具函数示例:(1)输出torch库包含的函数dir(torch)(2)输出torch.AVG函数中的参数dir(torch.AVG)2.help()工具作用:说明书,查看库中函数某个参数的说明或使用方法示例:(1)输出torch库中AVG......
  • druid报错:com.alibaba.druid.util.JdbcUtils - close connection error
    druid报错:com.alibaba.druid.util.JdbcUtils-closeconnectionerrorERRORcom.alibaba.druid.util.JdbcUtils-closeconnectionerrorjava.sql.SQLRecoverableException:IO错误:Socketreadtimedoutatoracle.jdbc.driver.T4CConnection.logoff(T4CConnect......
  • Knockout中ko.utils 的所有功能
    ko.utils是KnockoutJS中的一个工具类,它提供了一些实用的方法来处理数组、字符串和DOM元素等。这些方法可以分为以下几类:数组处理:这类方法用于处理数组,包括遍历、过滤、查找、映射和删除等操作。例如:ko.utils.arrayForEach、ko.utils.arrayFirst、ko.utils.arrayFilter、ko.u......
  • 「Python」参数化查询防止SQL注入攻击
    importpymysql#1.链接mysqlconn=pymysql.connect(user='root',password="123",host='127.0.0.1',database='cars'#需要去数据库创建表,无法在此创建) #2.获取一个游标cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#返回的查询结果以字典的形式表示,其......
  • 基于python的租房网站-房屋出租租赁系统(python+django+vue)
    该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。功能介绍平台采用B/S结构,后端采用主流的Python+Django进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、房屋详情页、......
  • 基于python+django的酒店预定网站-酒店管理系统
    该系统是基于python+django开发的酒店预定管理系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可在github给作者留言。演示地址前台地址:http://hotel.gitapp.cn后台地址:http://hotel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123源码地址h......