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.rhkb.cn/news/274201.html

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

相关文章

LVS集群 ----------------(直接路由 )DR模式部署 (二)

一、LVS集群的三种工作模式 lvs-nat:修改请求报文的目标IP,多目标IP的DNAT lvs-dr:操纵封装新的MAC地址(直接路由) lvs-tun:隧道模式 lvs-dr 是 LVS集群的 默认工作模式 NAT通过网络地址转换实现的虚拟服务器&…

day01vue学习

day01 一、为什么要学习Vue 1.前端必备技能 2.岗位多,绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能(Vue2Vue3) 二、什么是Vue 概念:Vue (读音 /vjuː/,类似于 view) 是一套 **构建用户界面 ** 的 …

网络基础aaa

三次握手 四次挥手 网络模型 TCP or UDP 的特点 如何理解 TCP 的5层协议 TCP的5层协议是指计算机网络体系结构中,与TCP(传输控制协议)相关的五个层次。这五个层次从高到低依次是:应用层、传输层、网络层、数据链路层和物理层。每…

Flask python开发篇: 写一个简单的接口

第一步:新建flask项目 参考使用pycharm新建一个项目 打开pycharm,根据下面图中箭头顺序,新建一个flask的项目; 第二步:运行项目, 安装成功以后,会有个app.py文件,打开以后&#…

OSI七层模型TCP四层模型横向对比

OSI 理论模型(Open Systems Interconnection Model)和TCP/IP模型 七层每一层对应英文 应用层(Application Layer) 表示层(Presentation Layer) 会话层(Session Layer) 传输层&#x…

JavaWeb--Maven

一:概述 1.简介 Maven 是专门用于管理和构建 Java 项目的工具,它的主要功能有: 提供了一套标准化的项目结构 提供了一套标准化的构建流程(编译,测试,打包,发布 …… ) 提供了一套…

【存储】ZYNQ+NVMe小型化全国产存储解决方案

文章目录 1、背景2、基础理论3、设计方案3.1、FPGA设计方案3.1.1、NVMe控制器实现3.1.2、NVMe控制器实现 3.2 驱动软件设计方案3.2.1 读写NVMe磁盘软件驱动3.2.2 NVMe磁盘驱动设计3.2.3 标准EXT4文件系统设计 3.3 上位机控制软件设计方案 4、测试结果4.1 硬件测试平台说明4.2 测…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统(DNS)三、文本传输协议(FTP)四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统(DNS) 我们知道,随着人们建立一个网站…

打字通小游戏制作教程:用HTML5和JavaScript提升打字速度

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Mac M1:通过docker安装RocketMQ、RocketMQ-Dashboard

0. 引言 最近本地启动以前docker安装的rocketmq发现报错了,因为是从老mac迁移过来的,发现支持的芯片还是amd的,于是重新在docker下安装rocketmq,并记录下步骤,方便大家后续参考。 1. 步骤 1、先下载项目源码 git c…

记录一个vue编辑的移动端页面

<template><div class"wrap"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true" label-width"120px"><el-form-item label"班级" prop"classId"…

运维自动化之ansible

pxe 一键安装操作系统 操作系统只是提供一个平台 lnmp 需要多软件协同完成的一个简单项目 服务器正常运行 日常运维 巡检 服务器上的软件正常运行 zabbix 普罗米修斯 系统调优&#xff0c;架构调优 云计算核心职能 搭建平台架构 日常运营保障 性能效率优化 相关工具 代…

【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)

前述 知识点学习&#xff1a; with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目&#xff1a;601. 体育馆的人流量 思路 关键&#xff1a;如何确定id是连续的三行或更多行记录 方法一&#xff1a; 多次连表&#xff0c;筛选查询方法二&…

护眼灯什么价位的好用?推荐五款好价护眼台灯

如今&#xff0c;我们不难发现许多年轻人早早地就戴上了眼镜&#xff0c;近视问题日益严重。在改善近视问题的众多因素中&#xff0c;营造适宜的照明环境&#xff0c;特别是选择一款合适的护眼台灯&#xff0c;显得尤为重要。然而&#xff0c;对于初次选购护眼台灯的人来说&…

vue+Nodejs+Koa搭建前后端系统(九)-- 上传图片

web2.0的到来使网页世界正式进入了寒武纪&#xff0c;各式各样的多媒体资源屡见不鲜&#xff0c;上传资源变得刻不容缓&#xff01; 前言 本文是在该系列的基础上&#xff0c;针对前后端代码的修改。 准备 HTTP上传图片时Content-Type值常见的有2种&#xff1a;application…

解决:chrome无痕模式下找不到插件问题

如需在 Chrome 浏览器或 ChromeOS 设备上以无痕模式使用扩展程序&#xff0c;请执行以下操作&#xff1a; 在新的无痕式窗口中&#xff0c;打开 chrome://extensions。找到要在无痕模式下使用的扩展程序。点击详情。开启在无痕模式下启用。 此时打开无痕模式&#xff0c;就能看…

经营分析怎么做?详解企业月度经营分析的思路与方法

企业经营分析是企业成功的关键之一&#xff0c;无论企业规模大小&#xff0c;都需要通过系统性的数据分析来指导经营决策。这一过程不仅仅是对集团大局数据的简单处理&#xff0c;还包括对市场、客户、生产、财务、运营、项目进展、人效等多个方面数据的全面审视。通过深入分析…

【微信小程序】传参存储

目录 一、本地数据存储 wx.setStorage wx.setStorageSync 1.1、异步缓存 存取数据 1.2、同步缓存 存取数据 二、使用url跳转路径携带参数 2.1、 wx.redirectTo({}) 2.2、 wx.navigateTo({}) 2.3、 wx.switchTab({}) 2.4 、wx.reLaunch({}) 2.5、组件跳转 三、…

解压常见_gzip:stdin:not in gzio format:怀疑下文件是否损坏

此次的主角文件是&#xff1a;pin-2.14-71313-gcc.4.4.7-linux.tar.gz 结论&#xff1a;文件后缀没问题&#xff0c;就先怀疑下是不是文件损坏了 ls指令看不出任何端倪 文件名、后缀都正常 解压出现报错 瞅瞅文件大小 du -h <文件名> 呦呵 4kb&#xff0c;和应该的大…

Android studio Gradle下载失败,如何手动配置解决该问题详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 今天在打开公司一个项目时&#xff0c;突然要重新下载相关的gradle&am…