目录

一、关于文件处理

1、json文件读写

2、xml文件读写

3、csv文件读写

4、excel文件读写

二、关于异步

1、threading

1、asyncio

2、aio_pika库


一、关于文件处理

1、json文件读写

参考:JSON 编码和解码器

import json
f_name = 'msginp_10_11.json'
msg_inp = input('请输入您喜欢的数字:')# json.dumps()和json.loads()是json格式处理函数
# json.dumps()函数将字典转化为字符串
# json.loads()函数将字符串转化为字典# write_json数据
with open(f_name, 'w') as fn:json.dump(msg_inp, fn)   #实际作用等同于如下两行# json_str = json.dumps(msg_inp)   #将字符串转换为json格式# fn.write(json_str)   #将json格式的字符串写入文件#read json数据
with open(f_name) as fn1:c = json.load(fn1)print('I know your favorite number! It\'s '+ c)

2、xml文件读写

参考:XML处理模块 — Python 3.9.1 文档

基于ElementTree实现xml文件读写,xml示例如下:

<?xml version="1.0"?>
<data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country>
</data>

常见操作如下:

import xml.etree.ElementTree as ET# 1.获取xml树有两种方式:读取xml文件获取或者读取xml格式的字符串获取
# 1)读取xml文件获取
tree = ET.parse('country_data.xml')
root = tree.getroot()# 2)读取xml格式的字符串获取:返回的是根节点
root = ET.fromstring(country_data_as_string)# 2.节点的标签和属性
root.tag
root.attrib
root[0][1].text# 3.迭代节点
for child in root:# 4.通过索引访问特定的子级节点:
root[0][1].text# 5.查找节点
for neighbor in root.iter('neighbor'):
for country in root.findall('country'):# 6.修改xml文件
Element.text #修改内容的值
Element.set() #添加或修改属性值
Element.append() #添加节点
a = ET.Element('a')
b = ET.SubElement(a, 'b') #向节点a添加子节点b
Element.remove() #删除节点

3、csv文件读写

4、excel文件读写

二、关于异步

1、threading

参考:python多线程详解(超详细)

import threading
from threading import Lock,Thread
import time
import os# 多个线程共享全局变量
g_num = 100def run(n):print('task',n)time.sleep(1)print('2s')time.sleep(1)print('1s')time.sleep(1)print('0s')time.sleep(1)# 1.创建线程:# target是要执行的函数名(不是函数),args是函数对应的参数,以元组的形式存在
t1 = threading.Thread(target=run, args=('t1',))
t2 = threading.Thread(target=run, args=('t2',))# 2.启动线程
t1.start()
t2.start()# 3.声明线程锁
lock = Lock()
lock.acquire()
lock.release()# 4.声明信号量
semaphore = threading.BoundedSemaphore(5)   #最多允许5个线程同时运行
semaphore.acquire()   #加锁
semaphore.release()    #释放# 5.事件:全局定义了一个Flag,当Flag的值为False,那么event.wait()就会阻塞,当flag值为True,那么event.wait()便不再阻塞
event = threading.Event()
event.set()
event.clear()
event.wait()

1、asyncio

参考:协程与任务

import asyncio
import time# 1.定义coroutine,使用async/await
async def test(delay, what):await asyncio.sleep(delay)print(what)# 2.获得task
task_list = []
for i in range(10):task = asyncio.ensure_future(test(delay=1, what=”hello“))task_list(task)# 3.获取Future对象
tasks = asyncio.gather(* task_list)if __name__ == "__main__":loop = asyncio.get_event_loop()loop.run_until_complete(tasks)loop.close()

python并发大量协程时报错ValueError: too many file descriptors in select()。这个是操作系统关于select()的限制,linux打开文件的最大数默认是1024,windows默认是509,超过了这个值,程序就开始报错。这里我们有三种方法解决这个问题:

  • 限制并发数量。(一次不要塞那么多任务,或者限制最大并发数量)
  • 使用回调的方式。
  • 修改操作系统打开文件数的最大限制,在系统里有个配置文件可以修改默认值,具体步骤不再说明了。

2、aio_pika库

参考:aio-pika中文文档

import asyncio
import aio_pika# 1.建立连接
async def get_connection():connection_string = "amqp://{user}:{password}@{mq_ip}:{mq_port}".format(user="user", password="password",mq_ip="mq_ip", mq_port="5672")connection = await aio_pika.connect_robust(connection_string, loop=loop, ssl=True)return connection# 2.向交换机推送消息
async def publish(routing_key="test_exchange", exchange_name="test_exchange"):connection = await get_connection()async with connection:channel = await connection.channel()exchange = await channel.get_exchange(exchange_name)message = aio_pika.Message(body="Hello {}".format(routing_key).encode())await exchange.publish(message, routing_key=routing_key)# 3.从队列中获取消息
async def consume(queue_name="test_queue"):connection = await get_connection()async with connection:channel = await connection.channel()queue = await channel.get_queue(queue_name)async with queue.iterator() as queue_iter:async for message in queue_iter:async with message.process():print(message.body)if queue.name in message.body.decode():breaktask_list = []
for i in range(2):task = asyncio.ensure_future(publish(routing_key="test_exchange", exchange_name="test_exchange"))task_list.append(task)
tasks = asyncio.gather(*task_list)if __name__ == "__main__":loop = asyncio.get_event_loop()loop.run_until_complete(tasks)loop.close()

连接报错:Rabbitmq报错pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport indicated EOF',)

报错原因:产生此报错的原因是将rabbit连接port写成了15672。rabbitmq需要通过端口5672连接,而不是15672,更改端口,转发,一切正常。

Python常用编程模块汇总相关推荐

  1. python课程编程题汇总(中)

    python编程题汇总 众所周知,由于疫情的原因,大家都在上网课,我也不例外啦~ 用这个贴子来记录也和大家分享一下我们课上的编程讨论题 上篇在这→python课程编程题汇总(上) 下篇在这→pytho ...

  2. Python常用的模块的使用技巧

    Python常用模块的使用技巧 目录 Python常用模块的使用技巧 1.Python配置说明 (1)Python注释说明 (2)函数说明 (3)ipynb文件转.py文件 (4)Python计算运行 ...

  3. python常用模块教程_盘点Python常用的模块和包

    模块 1.定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块. 2.优点: 提高代码 ...

  4. Python 常用基础模块(四):sys模块

    目录 一.sys模块介绍 1.1 什么是 Python 解释器(说明) 1.2 sys 模块的作用 二.常用方法及属性介绍 2.1 modules属性--将模块名称映射到已加载模块的字典 2.2 ge ...

  5. python - 常用Excel模块

    常用Excel模块 模块一:xlrd.xlwt.xutils --增删改查 xlrd:读取Excel数据模块 xlwt:写入Excel数据模块 xutils:修改Excel数据模块 安装:xlrd.x ...

  6. python常用第三方模块多少万_python 常用第三方模块

    除了内建的模块外,Python还有大量的第三方模块. 基本上,所有的第三方模块都会在https://pypi.python.org/pypi上注册,只要找到对应的模块名字,即可用pip安装. 本章介绍 ...

  7. Python 常用编程方法

    python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  8. Python常用的模块和简单用法

    random 随机模块 import random code = random.choice(stock_list) 从一个列表中随机选取元素下面是我目前经常用到的模块,为了方便使用,不是有特殊需求的 ...

  9. Python 常用系统模块整理

    Python中的常用的系统模块中部分函数等的整理 random: 随机数 sys: 系统相关 os: 系统相关的 subprocess: 执行新的进程 multiprocessing: 进程相关 th ...

最新文章

  1. php正则匹配td,正则表达式-查找td标签之间的所有内容 - php
  2. 51单片机c语言乘法,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!
  3. HBASE+Solr实现详单查询--转
  4. 注释数据库介绍之GO、KEGG数据库
  5. jQuery 事件介绍
  6. hadoop 2.6.5 + hive 集群搭建
  7. CloudComputing是什么
  8. egret性能优化总结
  9. 计算机硬件不仅使用二进制,【判断题】计算机硬件中不仅使用二进制表示数据,也经常使用十六进制。...
  10. 软件测试实例——总结
  11. 计算机相关技术汇报ppt模板,计算机硕士开题报告ppt模板.doc
  12. 幼儿 Android App,中国幼儿园在线app
  13. 【修真院“善良”系列之二】产品经理应该懂哪些术语?
  14. Win8Metro(C#)数字图像处理--2.26图像减法
  15. 手机号格式校验和手机号添加空格
  16. 二叉树的遍历 中序线索二叉树
  17. 单元测试中不能加入参数
  18. CVPR 2019 开源论文 | 针对未知目标领域的通用领域适配方法
  19. ES索引创建、新增与修改字段
  20. Unity3D教程笔记——unity初始03

热门文章

  1. loj 1251(2-sat + 输出一组可行解)
  2. gdb来调式多线程(转)
  3. tcpdump抓取udp报文
  4. ORA-15260: permission denied on ASM disk group
  5. Eclipse 工作目录被破坏,导致Eclipse 打不开
  6. NYOJ 311 完全背包
  7. windows下安装RabbitMQ消息服务器 + 读写队列
  8. 秦磊:被分众CEO“忽悠”往事
  9. kibana升级之后原本保存的数据dashboards, visualizations, index patterns丢失
  10. SQL MIN() 函数