《Python学习》-- 实操篇一

一、文件操作

1. 1 读取文本文件

# 文件操作模式
# 'r' (默认) - 只读模式。文件必须存在,否则会抛出FileNotFoundError。在这种模式下,你只能读取文件内容,不能写入或追加。
# 'w' - 写入模式。如果文件存在,内容会被清空;如果文件不存在,会创建新文件。注意,'w'模式不会自动添加内容到现有文件末尾,而是覆盖文件。
# 'a' - 追加模式。如果文件存在,内容会被追加到文件末尾;如果文件不存在,会创建新文件。
# 'x' - 创建模式。如果文件不存在,会创建新文件并以写入模式打开;如果文件已存在,会抛出FileExistsError。
# 'b' - 二进制模式。与前面的模式结合使用,如'rb'(只读二进制)、'wb'(写入二进制)、'ab'(追加二进制)等。
# 't' - 文本模式(默认)。与前面的模式结合使用,如'rt'(只读文本)、'wt'(写入文本)等。在文本模式下,Python会处理换行符的转换。
# '+' - 更新模式。允许同时读取和写入。例如,'r+'、'w+'、'a+'。
# 'U' - 通用换行模式(在Python 3中已弃用,使用'r'和newline参数代替)。# 打开一个文件
f = open('d:/log/致橡树.txt', 'r', encoding='utf-8')# 读取全部内容data = None
try:while True:data = f.read(16);if data == '':breakelse:print(data)
except:pass
finally:f.close()

1. 2 读取二进制文件

from   io  import  SEEK_SET,SEEK_END# 打开一个文件.模式为rb,意思是读取二进制文件
file = open('d:/log/aaa.png', 'rb')
# 获取文件大小
# 将当前file对象的指针逸动到末尾
file.seek(0, SEEK_END)
# 返回当前文件指针的位置,即文件的大小
fileSize = file.tell()
# 将指针移到文件开头
file.seek(0, SEEK_SET)
while True:# 读取512个字节,一个扇区data = file.read(512)# 如果读取的字节为空,则退出循环if not data:break# 打印读取到的16个字节print(data)

1. 3 获取文件的摘要

# 计算文件的摘要
import hashlib
# 定义一个计算文件MD5哈希值的函数
def get_file_md5(file_path):# 初始化MD5哈希对象m = hashlib.md5()# 打开文件,以二进制模式('rb')读取with open(file_path, 'rb') as f:# 使用一个无限循环,直到文件读取完毕while True:# 读取4096字节的数据data = f.read(4096)# 如果没有更多数据(文件读取结束),退出循环if not data:break# 更新MD5哈希值m.update(data)# 返回计算得到的MD5哈希值,以16进制字符串形式return m.hexdigest()if __name__ == '__main__':# 调用函数并传入文件路径print(get_file_md5('d:/log/aaa.png'))

1. 4 文件的写入

# 文件写入
# with: 上下文语法,with语句会自动关闭文件,不需要手动关闭
with open('d:/log/致橡树.txt', 'w', encoding='utf-8') as f:f.write('今天是2019年10月1日\n')f.write('今天是2019年10月2日\n')f.write('今天是2019年10月3日\n')

1. 5 文件的拷贝

# 文件拷贝
# 方式一:采用Python shutil 模块
import shutil
shutil.copyfile('d:/log/致橡树.txt', 'd:/log/致橡树_copy.txt')# 方式二:自定义函数
def copy_file(src, dst):with open(src, 'rb') as f_src:with open(dst, 'wb') as f_dst:while True:data = f_src.read(4096)if not data:breakf_dst.write(data)copy_file('d:/log/致橡树.txt', 'd:/log/致橡树_copy.txt')

1. 6 读取CSV文件

# 读取CSV文件
import csv
def read_csv(file_path):with open(file_path, 'r', newline='') as f:reader = csv.reader(f,delimiter=',')for row in reader:print(row)

 1. 7 Excel 操作

   读取xls文件

# excel操作
import xlrd   # 读取xls类型文件
import xlwt  # 生成excel文件, xls类型
import xlutilsimport openpyxl # 读、写xlsx类型文件# 读取excel文件
def read_excel(file_path):# 打开文件,返回workbook对象workbook = xlrd.open_workbook(file_path)# 获取所有sheetsheets = workbook.sheet_names()# 打印所有sheet名称print(sheets)# 获取第一个sheet# sheet1 = workbook.sheet_by_name('Sheet1')sheet1 = workbook.sheet_by_index(0)# 打印sheet的名称,行数,列数print(sheet1.name, sheet1.nrows, sheet1.ncols)# 遍历sheet中的所有行for row in range(sheet1.nrows):# 遍历sheet中的所有列for col in range(sheet1.ncols):# 获取单元格数据cell_value = sheet1.cell_value(row, col)print(cell_value)# 打开一个已存在的excel文件写入
def write_excel(file_path):# 打开文件,返回workbook对象workbook1 = xlrd.open_workbook(file_path)workbook2 = xlutils.copy(workbook1)sheet1 = workbook2.get_sheet(0)sheet1.write(0, 0, 'hello')workbook2.save(file_path)

二、正则表达式

# 正则表达式
import re
# 根据输入的字符串去匹配是否是手机号
def is_mobile_phone(mobile_phone):# 1. 创建正则表达式对象,表示规则(手机号)pattern = re.compile(r'^1[3-9]\d{9}$')# 2. 使用正则表达式对象,匹配字符串,返回匹配对象match = pattern.match(mobile_phone)# 3. 获取匹配结果if match:return Trueelse:return Falseif __name__ == '__main__':print(is_mobile_phone('18988888888'))

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

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

相关文章

大模型日报2024-06-02

大模型日报 2024-06-02 大模型资讯 LLM360推出K2:开源大语言模型,计算效率超越Llama 2 70B 摘要: LLM360发布了K2,一款完全可复现的开源大语言模型。K2在计算效率上超越了Llama 2 70B,使用的计算能力减少了35%。这一突破性的模型为…

JAVA: 抽象类和接口

Java中可以可以定义不含方法体的方法,方法的方法体由其所在类的子类根据实际需求去实现,这样的方法称为抽象方法(Abstract Method),包含抽象方法的类必须是抽象类(Abstract Class)。 抽象方法和…

【架构设计】Java如何利用AOP实现幂等操作,防止客户端重复操作

1实现方案详解 在Java中,使用AOP(面向切面编程)来实现幂等操作是一个常见的做法,特别是当你想在不修改业务代码的情况下添加一些横切关注点(如日志、事务管理、安全性等)时。幂等操作指的是无论执行多少次,结果都是相同的操作。 为了利用AOP实现幂等操作以防止客户端重…

基于STM32的水库预警系统的Proteus仿真

文章目录 一、水库预警系统1.题目要求2.思路2.1 OLED显示汉字2.2 水质传感器等等2.3 步进电机2.4 驱动水泵 3.仿真图3.1 未仿真时3.2 开始仿真,OLED开始显示3.3 提高水位,开启阀门和预警3.4 通过按键增大水位阈值,取消报警 4.仿真程序4.1 程序…

轻松拿捏C语言——【文件操作】

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🎉创作不易,请多多支持🎉 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正 目录 &#x1f…

关于模拟信道和数字信道根本区别的探讨

在学习过程中,了解到模拟信号、数字信号是什么,以及模拟信道只能传输模拟信号,数字信道只能传输数字信号,模拟信道要传输数字信号,需要经过调制解调器将数字信号调制成模拟信号再传输。也了解到,电话线是属…

谨以此文章记录我的蓝桥杯备赛过程

以国优秀结束了蓝桥杯cb组 鄙人来自电信学院,非科班出身,在寒假,大约2024年2月份,跟着黑马程序员将c基础语法学完了,因为过年,事情较多,没在学了。 最初就是抱着拿省三的态度去打这个比赛的&a…

C语言之旅:探索单链表

目录 一、前言 二、实现链表的功能: 打印 创建节点 尾插 尾删 头插 头删 查找 在指定位置之前插入数据 指定位置删除 在指定位置之后插入数据 打印 销毁 三、全部源码: 四、结语 一、前言 链表是一个强大且基础的数据结构。对于很多初…

禁用手机连接 - Win11

问题 Win11系统自带手机连接软件,会在后台自启,不适用于全部的手机型号,而且常规方法无法卸载。甚至任务管理器中,此软件的后台进程高达76个,如下图。下文以Win11系统为例,介绍如何禁用手机连接。 解决方…

考研数学:有些无穷小不能用等价无穷小的公式?

今天要给大家分享的笔记是:《有些无穷小虽然是无穷小,但却不能用无穷小的相关公式》:

Winform GDI+双缓冲绘图与GDI API双缓冲绘图

一、GDI双缓冲绘图 BufferedGraphicsContext GraphicsContext BufferedGraphicsManager.Current;BufferedGraphics myBuffer GraphicsContext.Allocate(e.Graphics, e.ClipRectangle);Graphics g myBuffer.Graphics;Bitmap bitmap bitmaps[index];g.DrawImage(bitmap, 0, 0…

来自大厂硬盘的降维打击!当希捷酷玩520 1TB SSD卷到369,请问阁下该怎么应对?

来自大厂硬盘的降维打击!当希捷酷玩520 1TB SSD卷到369,请问阁下该怎么应对? 哈喽小伙伴们好,我是Stark-C~ 今年4月份的时候因为电脑上的游戏盘突然挂掉,为了性价比选购了希捷酷玩520 1TB SSD,同时我也是…

vue3加axios配合element-plus实现图片等文件本地上传,并获取服务器返回的真实地址数据,前端写法

小白写法嘿嘿 开发工具和关键词 开发工具: vscode 关键词:vue3、element-plus、axios 后端 后端业务逻辑处理使用的是unicloud的云函数,大家可以看我上一篇文章。 思路 1、禁止element-plus的el-upload组件自动上传,变成手动上传…

装修10个容易被遗忘的开关插座位置

雅静说家里开关插座哪些最容易忘记了留?      一共10个,你看看有少的吗,我家水电师父就没有留够      来了又重新补的很麻烦,记得收藏      1,大门口上边留一个,后期可以安装监控      特别家里有老人和小孩,以及经常来快递的      2,弱电箱留…

7. MySQL 视图、索引

文章目录 【 1. 视图 View 】1.1 视图原理1.2 创建视图 CREATE VIEW1.2.1 创建基于单表的视图1.2.2 创建基于多表的视图 1.3 查看视图1.3.1 查看视图的内容1.3.2 查看视图的详细信息 1.4 修改视图 ALTER VIEW1.4.1 修改视图内容1.4.2 修改视图名称 1.5 删除视图 DORP VIEW 【 2…

961题库 北航计算机 计算机网络 附答案 选择题形式

有题目和答案,没有解析,不懂的题问大模型即可,无偿分享。 第1组 习题 OSI 参考模型的第 5 层( 自下而上 ) 完成的主要功能是 A. 差错控制 B. 路由选择 C. 会话管理 D. 数据表示转换 100BaseT 快速以太网使用的导向传输介质是 A. 双绞线 B. …

Gin的快速入门和搭建

文章目录 Go的工程工程架构技术选型 Gin入门 Go的工程 基于Go生态,构建一个支持内容管理,内容加工、内容分发的内容库系统。 内容管理:增删改查内容加工:例如内容审核、推荐等内容分发:将内容可以推到不同的业务线 …

linux进阶的一些操作以及知识点------习题集(实践)

请创建以你姓名全拼的用户luwenhua,将其设置为免密登录,切换到luwenhua用户,打开终端,完成以下操作 (一)bash脚本基础练习 1)第一题:请在终端里定义两个用户变量num120&#xff0c…

C# try catch异常捕获

异常捕获 执行过程:try中的代码没有出现异常,则catch里面不会自行,如果try中代码出现异常,则后面的代码都不执行,直接跳到catch中的代码执行。 // try catch 可以捕获多个错误, try...catch...catch.... …

【HarmonyOS】 多层嵌套对象通过@ObjectLink和@Observed实现渲染更新处理!

【HarmonyOS】 多层嵌套对象通过ObjectLink和Observed实现渲染更新处理! 一、问题背景: 上文讲过 (【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理)对多层嵌套的简单处理,即:深拷贝item数据&…