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调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应