当前位置: 首页 > news >正文

《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'))

相关文章:

《Python学习》-- 实操篇一

一、文件操作 1. 1 读取文本文件 # 文件操作模式 # r (默认) - 只读模式。文件必须存在,否则会抛出FileNotFoundError。在这种模式下,你只能读取文件内容,不能写入或追加。 # w - 写入模式。如果文件存在,内容会被清空&#xff…...

C# 集合(二) —— List/Queue类

总目录 C# 语法总目录 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 类似数组,查找快,插入删除慢(相对)LinkedList 类似双向链表,查找慢(相对),插入删除快 //ArrayList //ArrayList Arr…...

【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC

功能 读取P1.4电压,显示到口袋板显示屏,电压越高亮灯越多。 部分程序 while (1){ADC10CTL0 | ENC ADC10SC; // Sampling and conversion startLPM0;adcvalue ADC10MEM; //原始数据 0到1023adtest (float) adcvalue / 1024.…...

知乎x-zse-96、x-zse-81

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章未…...

【Linux】Linux工具——yum,vim

1.Linux 软件包管理器——yum Linux安装软件: 源代码安装(不建议)rpm安装(类似Linux安装包,版本可能不兼容,不推荐,容易报错)yum安装(解决了安装源,安装版本&…...

ES 生命周期管理

一 .概念 ILM定义了四个生命周期阶段:Hot:正在积极地更新和查询索引。Warm:不再更新索引,但仍在查询。cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。Dele…...

【JavaScript脚本宇宙】揭秘HTTP请求库:深入理解它们的特性与应用

深度揭秘:六大HTTP请求库的比较与应用 前言 在这篇文章中,我们将探讨六种主要的HTTP请求库。这些库为处理网络请求提供了不同的工具和功能,包括Axios、Fetch API、Request、SuperAgent、Got和Node-fetch。通过本文,你将对每个库…...

【强化学习】DPO(Direct Preference Optimization)算法学习笔记

【强化学习】DPO(Direct Preference Optimization)算法学习笔记 RLHF与DPO的关系KL散度Bradley-Terry模型DPO算法流程参考文献 RLHF与DPO的关系 DPO(Direct Preference Optimization)和RLHF(Reinforcement Learning f…...

vue3 todolist 简单例子

vue3 简单的TodList 地址: https://gitee.com/cheng_yong_xu/vue3-composition-api-todo-app-my 效果 step-1 初始化项项目 我们不采用vue cli 搭建项目 直接将上图文件夹,复制到vscode编辑器,清空App.vue的内容 安装包 # 安装包 npm…...

Linux项目编程必备武器!

本文目录 一、更换源服务器二、下载man开发手册(一般都自带,没有的话使用下面方法下载) 一、更换源服务器 我们使用apt-get等下载命令下载的软件都是从源服务器上获取的,有些软件包在某个服务器上存在,而另一个服务器不存在。所以我们可以添加…...

AndroidStudio编译很慢问题解决

如果gradle同步、编译下载很慢,可以换一下仓库阿里云镜像 repositories {maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/jcenter } maven { url https://maven.aliyun.com/repository/public } goog…...

PHAR反序列化

PHAR PHAR(PHP Archive)文件是一种归档文件格式,phar文件本质上是一种压缩文件,会以序列化的形式存储用户自定义的meta-data。当受影响的文件操作函数调用phar文件时,会自动反序列化meta-data内的内容,这里就是我们反序…...

Rust安装

目录 一、安装1.1 在Windows上安装1.2 在Linux下安装 二、包管理工具三、Hello World3.1 安装IDE3.2 输出Hello World 一、安装 1.1 在Windows上安装 点击页面 安装 Rust - Rust 程序设计语言 (rust-lang.org),选择"下载RUSTUP-INIT.EXE(64位)&qu…...

513.找树左下角的值

给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路: 深度最大的叶子结点一定是最后一行。 优先左边搜索,记录深度最大的叶子节点,此时就是树的最后一行最左边的值 代码: class Solution:def fi…...

docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令

核心功能操作镜像 Docker安装mysql docker run -d --name mysql -p 3306:3306 -e TZAsia/Shanghai -e MYSQL_ROOT_PASSWORDlcl15604007179 mysql docker的基本操作 docker rm 容器名称即可 docker ps 查看当前运行的容器 docker rm 干掉当前容器 docker logs 查看容器命令日…...

MyBatis二、搭建 MyBatis

MyBatis二、搭建 MyBatis 开发环境MySQL 不同版本的注意事项驱动程序(Driver)JDBC URL连接参数MyBatis配置文件版本兼容性常见问题与解决方案示例(MySQL 8.x与MyBatis连接) 创建 Maven 工程打包方式:Jar引入依赖创建数…...

昵称生成器

package mainimport ("math/rand" )// 随机昵称 形容词 var nicheng_tou []string{"迷你的", "鲜艳的", "飞快的", "真实的", "清新的", "幸福的", "可耐的", "快乐的", "冷…...

mysql仿照find_in_set写了一个replace_in_set函数,英文逗号拼接字符串指定替换

开发中使用mysql5.7版本数据库,对于英文逗号拼接的字符串,想要替换其中指定的字符串,找不到数据库函数支持,自己写了一个,实测好用! /*类似find_in_set,按英文逗号拆分字段,找出指定的旧字符串,替换成新字…...

机械设计手册第一册:公差

形位公差的标注: 形位公差框格中,不仅要表达形位公差的特征项目、基准代号和其他符号,还要正确给出公差带的大小、形状等内容。 1.形位公差框格: 形位公差框格由两个框格或多个格框组成,框格中的主要内容从左到右按…...

如何把图片保存成16位png格式?

在进行图像处理的过程中,见过8位和24位的图片,然而还没见过16位的,其实也有,比如对于灰度图,就是相当于利用65535个灰度级进行灰度存储。而8位就是256个位置存储。相当于就是0-255. 今天尝试了巨久,用pyth…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...