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

相关文章

基于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

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合