Python高级二

一、异常

        1、定义

        异常是在程序执行过程中出现的错误或意外情况。当程序遇到异常时,它会中断当前的执行流程,并尝试找到相应的异常处理机制来解决问题。

        2、常见异常类型

        SyntaxError:语法错误,通常是代码书写不符合Python语法规则。

        NameError:名称错误,当引用一个未定义的变量或函数时抛出。

        TypeError:类型错误,当对不支持的操作数类型进行操作时抛出。

        ValueError:值错误,当传入的参数类型正确但取值范围不正确时抛出。

        IndexError:索引错误,当访问列表、元组或字符串等序列类型时使用了无效的索引值时抛出。

        KeyError:键错误,当访问字典中不存在的键时抛出。

        FileNotFoundError:文件未找到错误,当尝试打开不存在的文件时抛出。

        3、示例

def func(x, y):if y != 0:return x/yif __name__ == '__main__':try:  #包含所有可能抛出异常的代码a = int(input("x:"))b = int(input("y:"))res = func(a, b)print("res:", res)fd = open("file.txt", mode="r+")  # opend 打开文件print(fd)except ZeroDivisionError as err:   #as  保存异常信息print("*********************", err)except (IOError, NameError) as err:  #如果捕获多种异常  则使用元组print("error:11111111111111", err)

二、目录操作

           要进行目录操作,可以使用Python中的os模块或pathlib模块。这些模块提供了许多用于处理文件和目录的函数和方法。     

         1、创建目录

import os.path#检查目录 12 是否存在或者是否是一个目录   存在:True 不存在:False
dir = "12"
if os.path.exists("12") is False:os.mkdir(dir)    #创建该目录print("目录创建成功")
else:print("目录已存在,创建失败")

        2、查看目录下的文件并分类

import os.path# listdir(dir) :列举出dir 目录中的所有文件名
files = os.listdir("../day2")
print(files)
dir = []
fi = []
for file in files:path = "../day2/" + file  #"path" 通常指代文件系统中文件或目录的路径if os.path.isdir(path):dir.append(file)else:fi.append(file)
print("目录:", dir)
print("文件", fi)

三、文件操作

        open函数       

   open()函数是Python内置函数之一,用于打开文件并返回一个文件对象,以便对文件进行读取、写入或其他操作。

       file: 文件路径(包括文件名)

  mode: 打开文件的模式,常见的包括:

        "r": 只读模式,文件必须存在。

        "w": 只写模式,清空文件内容,若文件不存在则创建新文件。

        "a": 追加模式,在文件末尾添加内容,若文件不存在则创建新文件。

        "r+": 读写模式,允许读取和写入文件内容。

        其他参数:如buffering(缓冲大小)、encoding(文件编码)、errors(编解码错误处理方式)等

        返回值:open()函数返回一个文件对象,可以通过该文件对象执行文件的读取、写入等操作。

        1、权限

        "r":只读模式,文件必须存在,如果文件不存在则会引发错误。

        "w":只写模式,文件不存在则创建,文件存在则清空内容。

         "a":追加模式,文件不存在则创建,文件存在则在末尾追加内容。

         "r+":读写模式,文件必须存在,从文件头开始读写。

         "w+":读写模式,文件不存在则创建,文件存在则清空内容并从头开始读写。

         "a+":读写模式,文件不存在则创建,文件存在则在末尾追加内容并可以读取。

        2、打开文件

                   fd = open("file.txt", mode="w+")   #以读写模式打开文件file.txt

        3、读取文件内容

        res = fd.read(32)        #read(n)读取前n 字节的数据 返回str类型

        res = fd.readlines()     #readlines() :读取文件所有行数据, 返回list类型

        4、向文件写入内容

        fd.write("hello world")    #write()写入数据hello world

        5、示例

fd = open("file.txt", mode="w+")
with open("file.txt", mode="r+") as fd:l1 = ["123444\n", "45644\n", "789565\n", "goodbye\n"]fd.writelines(l1)   #按行写入数据  用于将一个字符串列表写入文件。每个字符串元素都作为一行写入文件。fd.close()

        6、with语句

        with语句是用于简化资源管理的一种方式,确保在代码块执行完成后自动关闭文件、释放锁或者执行其他清理操作。

四、多线程 

        示例

from threading import Thread
from time import sleep, ctimedef study(book):for i in range(5):print("I'm study 《{}》 {}".format(book, ctime))sleep(1)
def music(music):for i in range(5):print("I'm listening 《{}》".format(music))sleep(2)if __name__ == '__main__':#Thread() : 创建线程  target : 用指定线程执行函数  args:传递数据到线程中t1 = Thread(target = study, args = ("模电",))#start(): 启动线程t1.start()t2 = Thread(target=music, args=("蓝莲花",))# start(): 启动线程t2.start()t1.join()t2.join()

五、多进程

        示例

from multiprocessing import Process
from time import sleep, ctimedef study(book):for i in range(5):print("I'm study 《{}》 {}".format(book, ctime()))sleep(1)def music(music):for i in range(5):print("I'm listening 《{}》".format(music))sleep(2)if __name__ == '__main__':#Process() : 创建进程  target : 用指定进程执行函数  args:传递数据到线程中t1 = Process(target=study, args=("模电",))#start(): 启动进程t1.start()t2 = Process(target=music, args=("蓝莲花",))# start(): 启动进程t2.start()t1.join()t2.join()

六、锁

        在多线程编程中,锁是一种同步机制,用于控制多个线程对共享资源的访问。使用锁可以确保在任意时刻只有一个线程可以访问共享资源,从而避免多个线程同时修改共享数据导致的数据不一致或竞态条件等问题。

from threading import Thread, Lock# 共享资源
counter = 0
l = Lock()
# 定义一个函数,用于增加计数器的值
def increase_counter():global counterfor _ in range(1000):with l:counter += 1# 创建两个线程分别增加计数器的值#Thread() : 创建线程  target : 用指定线程执行函数  args:传递数据到线程中
thread1 = Thread(target=increase_counter)
thread2 = Thread(target=increase_counter)thread1.start()
thread2.start()thread1.join()
thread2.join()print("Final value of counter:", counter)

七、管道

        管道(Pipe)是一种进程间通信机制,通常用于在父进程和子进程之间传递数据。在Python中,可以使用multiprocessing模块中的Pipe类来创建管道。

        示例

from multiprocessing import Process, Pipe, freeze_support# 子进程的函数,接收父进程发送的消息并回复
def child_process(conn):while True:msg = conn.recv()  # 接收消息print("Received message from parent:", msg)if msg == "exit":breakreply_msg = "Message received: " + msgconn.send(reply_msg)  # 回复消息conn.close()if __name__ == '__main__':freeze_support()  # 添加这一行# 创建管道parent_conn, child_conn = Pipe()# 启动子进程p = Process(target=child_process, args=(child_conn,))p.start()# 父进程向子进程发送消息并接收回复messages = ["Hello", "How are you?", "exit"]for msg in messages:parent_conn.send(msg)  # 发送消息if msg == "exit":breakreply = parent_conn.recv()  # 接收回复print("Received reply from child:", reply)p.join()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端】移动端布局

目录 1.移动端特点 分辨率 二倍图 2.百分比布局 3.flex布局 3.1flex布局模型 3.2主轴对齐方式 3.3 侧轴对齐方式 3.4flex属性 1.移动端特点 PC端网页和移动端网页的不同 PC端网页:屏幕大,网页固定版心 jd.com移动端网页:屏幕小 没…

实战案例——Kafka集群部署

1. 规划节点 IP主机名节点192.168.100.10zookeeper1集群节点192.168.100.20zookeeper2集群节点192.168.100.30zookeeper集群节点 2. 基础准备 使用ZooKeeper集群搭建的3个节点来构建Kafka集群,因为Kafka服务依赖于ZooKeeper服务, 所以不再多创建云主机…

接口自动化测试的三个阶段

根本目标 测试环境中,保证新增接口功能正确性,原有接口的回归(保证原有接口不被修改“坏”); 生产环境中,保证接口层面服务可用,功能的正确性(保证服务挂掉时,及时发现…

户口本怎么翻译成英文

户口本翻译件一般用于出国旅游签证、商务签证、移民留学等业务时,申请人所需提交的文件之一。户口本翻译件需要正规有资质的翻译机构翻译并加盖翻译专用章,这样才能得到有关部门的认可。那么,英国签证户口本翻译,中译英怎么翻译比较好&#x…

鸿蒙Harmony应用开发—ArkTS声明式开发(模态转场设置:全屏模态转场)

通过bindContentCover属性为组件绑定全屏模态页面,在组件插入和删除时可通过设置转场参数ModalTransition显示过渡动效。 说明: 从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 不支持横竖屏切换。…

TCP三次握手,四次挥手状态转移过程

1.TCP状态转移过程 TCP连接的任意一端都是一个状态机,在TCP连接从建立到断开的整个过程中,连接两端的状态机将经历不同的状态变迁.理解TCP状态转移对于调试网络应用程序将有很大的帮助. 2.三次握手状态转换 3.四次挥手状态转换 4.TIME WAIT状态详解 为什么要有一个"TIME…

数据标注专业团队

数据标注服务 在跟一些淘宝、多多商家老板合作后,客户一般付款后,中介是有20%左右的提成,我们主要是希望可以实现数据标注无中介化,有需求可以直接联系数据标注团队直接负责人, 若有意愿请添加添加v:shu_ju…

9. 内核、文件系统加载工具

内核、文件系统加载工具 内核、文件系统加载工具是嵌入式开发必备的工具 1. 烧写BootLoader 1.1 通过超级终端方式 烧写 Bootloader 可以使用超级终端的“传送” |“发送文件”命令进入发送文件对话框,使用 Xmodem 协议和 Kermit 协议发送 Bootloader 的各个文件…

docker安装rocketMq

在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。 此外,由于 rocketmq 需要部署 broker 与 nameserver ,考虑到分开部署比较麻烦,这里将会使用docker-comp…

网络模块使用Hilt注入

retrofit的异步回调方法已经做了线程切换&#xff0c;切换到了主线程 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"><uses-permission android:name"andr…

超越 Siri 和 Alexa:探索LLM(大型语言模型)的世界

揭秘LLM&#xff1a;语言模型新革命&#xff0c;智能交互的未来趋势 近年来&#xff0c;虚拟助手的世界发生了重大转变。 虽然 Siri 和 Alexa 本身就是革命性的&#xff0c;但一种称为大型语言模型 (LLM) 的新型人工智能正在将虚拟助手的概念提升到一个全新的水平。 在这篇博文…

JS自动跳转手机移动网页

JavaScript 中实现自动检测用户是否使用移动设备&#xff0c;并据此跳转到对应的手机移动网页&#xff0c;通常可以通过检查 ​​navigator.userAgent​​ 属性来识别用户代理字符串中包含的设备信息。以下是一个简单的示例&#xff0c;展示如何基于用户使用的浏览器类型进行判…

主流接口测试框架对比,究竟哪个更好用

公司计划系统的开展接口自动化测试&#xff0c;需要我这边调研一下主流的接口测试框架给后端测试&#xff08;主要测试接口&#xff09;的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求&#xff0c;看哪个框架更适合我们。 需求 1、接口编写…

2-LINUX--Linux 系统文件类型与文件权限

一.文件类型 Linux 下所有的东西都可以看做文件&#xff0c;Linux 将文件分为以下几种类型&#xff1a; 1. 普通文件 ‘-’ 2. 目录文件 ‘d’ 3. 管道文件 ‘p’ 4. 链接文件 ‘l’ 5. 设备文件&#xff08;块设备 ’b’ 、字符设备 ‘c’&#xff09; 6. 套接字…

伟骅英才|二月二:龙年龙抬头

二月二龙抬头&#xff0c;是中国民间传统节日&#xff0c;人们期盼通过对龙的祈求来实现降雨的目的&#xff0c;寄托了老百姓对美好生活的向往。这一天&#xff0c;人们通常会去理个发&#xff0c;寓意着“二月二剃龙头&#xff0c;一年都有精神头”。现如今的二月二&#xff0…

洛谷 素数环 Prime Ring Problem

题目描述 PDF 输入格式 输出格式 题意翻译 输入正整数 nn&#xff0c;把整数 1,2,\dots ,n1,2,…,n 组成一个环&#xff0c;使得相邻两个整数之和均为素数。输出时&#xff0c;从整数 11 开始逆时针排列。同一个环恰好输出一次。n\leq 16n≤16&#xff0c;保证一定有解。 多…

[虚拟机]

如果你电脑的物理机器硬件强大, 由于一台物理机器只能运行一个操作系统, 那么就会造成物理机器硬件的浪费 虚拟机:使用虚拟化技术&#xff0c;将一台物理机器虑拟化为多台虚拟机器&#xff08;Virtual Machine, VM)&#xff0c;每个虚拟机器都可以独立运行一个操作系统 虚拟机…

【MySQL知识体系】第1章 初识 MySQL

文章目录 第1章 初识 MySQL1.1 MySQL 介绍1.1.1 什么是 MySQL&#xff1f;1.1.2 MySQL 的特点&#xff1f;1.1.3 MySQL 默认端口&#xff1f; 1.2 安装 MySQL1.2.1在MacOS上安装MySQL1.2.2 在Windows上安装MySQL 1.3 如何选择 MySQL 客户端1.3.1 在MacOS上安装Workbench1.3.2 在…

arcgis辅助下的GIS滑坡泥石流易发性评估模型构建

我国是地质灾害多发国家&#xff0c;地质灾害的发生无论是对于地质环境还是人类生命财产的安全都会带来较大的威胁&#xff0c;因此需要开展地质灾害风险普查。利用遥感&#xff08;RS&#xff09;技术进行地质灾害调查工作具有宏观、快速、准确的特点&#xff0c;能反映出地质…

2.1_3 奈氏准则和香农定理

文章目录 2.1_3 奈氏准则和香农定理&#xff08;一&#xff09;失真&#xff08;二&#xff09;失真的一种现象——码间串扰&#xff08;三&#xff09;奈氏准则&#xff08;奈奎斯特定理&#xff09;&#xff08;四&#xff09;香农定理&#xff08;五&#xff09;“Nice”和“…