python常用库和操作的积累手册

2024-08-28 11:18

本文主要是介绍python常用库和操作的积累手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1,glob的语法
glob类似shell的find,非常方便
用这个替代常用的os.walk(变量路径)

  for root,dirs,files in os.walk(path):for file in files:if file.endswith('weiming.tcl'):     #也可用正则matchfile_path = os.path.join(root,file)
   使用 :
 import  glob路径列表  = glob.glob(路径+匹配file)glob.iglob('src/**/*.c', recursive=True)      #使用iglob进行递归搜索
    通配符语法:

https://rgb-24bit.github.io/blog/2018/glob.html

         例如:/path 路径下       abcde.log       abcde_ref.log匹配   abcde.log     使用   glob.glob(/path/*[!(_ref)]*.log) glob类似shell的find,非常方便用这个替代常用的os.walk(变量路径) 

2,copy的语法
如果a = 5, b = a,那么a和b都指向同一个数值,如果5发生变化,a和b都变化。.copy则是一层copy。如图
Python 直接赋值、浅拷贝和深度拷贝解析: https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html
字典是两层索引,因而.copy()对value就不正确了

   import copyb = a.copy()  # 浅复制,a和b是区分的但是二级对象如果是指向的话,指向的还是同一个b = copy.deepcopy(a)  # 深复制,所有子对象都不一样c ={"1":"a"}d = c.copy()    # 若通过c删除1的value值a,同步的d的也会删除a,但改变1的数值,d的key值可以不变d = copy.deepcopy(c)   #怎么改变c的值,d的值不受影响

3,删除字典或者删除列表的方法
参考内容:
https://blog.csdn.net/uuihoo/article/details/79496440
http://c.biancheng.net/view/2209.html
1,clear方法

dict.clear()   #   删除字典所有元素
list.clear()   #   删除列表所有元素

2, pop方法

                  list.pop[index]          # 弹出值,同时删除列表元素dict.pop  (key值)        #  弹出键值对,本身的值是弹出的value, 同时字典删除元素

3 ,del方法

        del   list[index]del   dict [  key ]

4.,其它方法
list.remove(元素)
dict.popitem[key] # 随机删除值

4, 对比两个文件或者两段字符的异同
需要用到difflib库

   import  difflibtext_1 = fa.read().splitlines()         #   将读取的字段进行分割text_2 = fb.read().splitlines()   text1 = [ i for i in text_1 if i not in text_2 ]     #      删除相同text2 = [ i for i in text_2 if i not in text_1 ]       diff  =  difflib.Differ()result = diff.compare (text1,text2)   #  result是一个带 + 和- 的行迭代器

5,关于os库的使用

  import osif not os.path.exists(dirs):              #判断路径是否存在os.makedirs(dirs)if not os.path.exists(filename):          #判断dir文件或者文件路径是否存在os.system(filename)  if not os.isfile(filename):             #判断是否是文件还是dir文件if not os.path.getsize(filename):         #判断文件是否为空os.remove(filename)

6,字典和json的相互转换
import json
content = json.dumps(字典, indent =4) # 将字典转化为直观格式的字符串
字典 = json.loads(字符串) #将字符串形式的格式json转化为字典
注意: 能否转json 可以先登录这个网站试一下https://www.json.cn/json/jsononline.html
7,读取shell命令的输出

 import os
process = os.popen('ls -l') # return file
output = process.read()
process.close()

8,python 并行的使用
一般同时引入time ,对比下运行时间

import time
import multiprocessing
start_time = time.asctime(time.localtime(time.time()))
print(start_time)
def abc(x)#  并行运行的函数return x
cores = multiprocessing.cpu_count()      #读取cpu 核数
pool = multiprocessing.Pool(processes=cores)     #  也可以自己设置processes数目pool.map(abc,list)   # 并行化运行,abc是函数,list是列表end_time = time.asctime(time .localtime(time.time()))
print(end_time)

注意:如果并行化处理列表处理字典, 需要用共享列表或者共享字典list = multiprocessing.Manager().list()

        list = multiprocessing.Manager().list()
import multiprocessing as mpdef f(x):return (x, x*x)if __name__ == '__main__':pool = mp.Pool()inputs = range(10)result = dict(pool.map(f, inputs))

7,读取进程的内存数据

import psutil
timeline = []
mem_usage = []
p1 = psutil.Popen("./run", shell=True)    #执行shell脚本
while p1.poll() == None:             # 判断程序是否在运行                                      currt_mem_sum = 0                                                       child_pids = p1.children(recursive=True)     # 获取所有的子进程                       for child_pid in child_pids:                                                 if child_pid and child_pid.memory_info():                                   currt_mem_sum += child_pid.memory_info().rss / (1024 * 1024)       timeline.append(time.time() - timestart)                                        mem_usage.append(currt_memo_sum)                                         time.sleep(1)                                                                   

8,优雅的合并两个字典

  x = {'a': 1, 'b': 2}y = {'b': 3, 'c': 4}z = {**x, **y}                     # 如果key相同,则y合并x

9,批量给变量赋值

  #方法1 使用locals:for i in range(0,10):locals()["temp" + str(i)] = i#方法2 使用exec函数:for i in range(0,10):exec("temp" + str(i) + "= i")#使用方法1,不能给实例变量赋值,使用方法2则可以

10,re.sub灵活的替换

import re
src = 'everything is alright.'
re.sub('(every).*?(\\s.*\\.)',r'\1body\2',src) # everybody is alright.

11,判断文件是否为空

os.path.getsize(filename)
os.path.exists(filename)

12,configparser模块的使用(最详细版)

https://www.cnblogs.com/zhangxianrong/p/14690380.html

config = configparser.ConfigParser()
config.read(configfile)
groups = config.sections()   # 返回列表
dicta = config._section      # 返回order dict (需要再转化字典)
b = config._section[group][a]       #  类似当字典用
b = read_options(group, a)

13,带颜色的log输出

import logging
class Log():logging.basicConfig(format='%(asctime)s [%(levelname)s]-> line:%(lineno)d : %(message)s', level=logging.INFO)@classmethoddef info(cls, msg):return logging.info(("\033[1;42m {} \033[0m").format(msg))@classmethoddef warning(cls, msg):return logging.warning(("\033[1;43m {} \033[0m").format(msg))@classmethoddef error(cls, msg):return logging.error(("\033[1;41m {} \033[0m").format(msg))

14, 对list的list去重
dic = list(set([tuple(t) for t in dic]))
dic = [list(v) for v in dic]

15,python 树形数据的操作
关于element的文档
python关于elementtree的文档
关于xmldom的文档
知乎相关element的文档
16,format 函数转进制

format(10, 'b')
'1010'
format(10, 'o')
format(10, 'x')  #大写转大写字母 X-> F,   x->f

17,re.sub命名分组易出错,无法分辨\1和\10

re.sub(r'(\d+\.\d+\.\d+\.)(\d$)',lambda m: m.group(1)+'0'+m.group(2),'192.168.1.8')
'192.168.1.08'

18,list去重不改变原来顺序

l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index) 
#或者
l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)

19,lambda的用法
1,lambda 相当于函数
lambda x: 2x 带上括号整体相当于一个函数的名称
例如:(lambda x: 2x)(2)
2, 和sort一起用
dica = dict(sorted(org_dic.items(), key=lambda x: x[0]))

这篇关于python常用库和操作的积累手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114613

相关文章

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker