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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该