当前位置: 首页 > 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'))

http://www.lryc.cn/news/360897.html

相关文章:

  • C# 集合(二) —— List/Queue类
  • 【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC
  • 知乎x-zse-96、x-zse-81
  • 【Linux】Linux工具——yum,vim
  • ES 生命周期管理
  • 【JavaScript脚本宇宙】揭秘HTTP请求库:深入理解它们的特性与应用
  • 【强化学习】DPO(Direct Preference Optimization)算法学习笔记
  • vue3 todolist 简单例子
  • Linux项目编程必备武器!
  • AndroidStudio编译很慢问题解决
  • PHAR反序列化
  • Rust安装
  • 513.找树左下角的值
  • docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令
  • MyBatis二、搭建 MyBatis
  • 昵称生成器
  • mysql仿照find_in_set写了一个replace_in_set函数,英文逗号拼接字符串指定替换
  • 机械设计手册第一册:公差
  • 如何把图片保存成16位png格式?
  • vue 关闭页面前释放资源
  • 堡垒机,日志审计系统,行为管理,漏洞扫描的作用
  • JVM学习-自定义类加载器
  • NDIS Filter开发-OID 请求
  • 软考 系统架构设计师之考试感悟2
  • [学习笔记](b站视频)PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】(ing)
  • Flutter开发效率提升1000%,Flutter Quick教程之定义构造参数和State成员变量
  • R语言数据分析-xgboost模型预测
  • 使用redis的setnx实现分布式锁
  • LangChain进行文本摘要 总结
  • 政安晨【零基础玩转各类开源AI项目】:解析开源项目的论文:Physical Non-inertial Poser (PNP)