首页 > 编程语言 >Python知识分享第十天

Python知识分享第十天

时间:2024-11-25 23:32:23浏览次数:10  
标签:文件 txt 第十天 encoding Python data print 分享 open

“”"
案例:假设你是一名教师,负责管理学生的成绩。你有一个名为 grades.txt 的文件,记录了所有学生的成绩。文件内容如下:
Alice,85
Bob,78
Charlie,92
David,88
Eve,76
你需要编写一个 Python 脚本,读取文件内容并计算出所有学生的平均成绩。
“”"

# 思路一
# stu_list = []
#
# with open('./data/grades.txt', 'r', encoding='utf-8') as stu_f:
#     while True:
#         str_stu = stu_f.readline().strip()
#         if len(str_stu) <= 0:
#             break
#         stu_list.append(int(str_stu.split(',')[1]))
#     print(f'学生的成绩为: {stu_list}')
#     avg = sum(stu_list) // len(stu_list)
#     print(f'学生的平均成绩为: {avg}')

# 思路二
stu_list = []
#第一种写法
# with open('./data/grades.txt', 'r', encoding='utf-8') as stu_f:
#     stu_line = stu_f.readlines()
#     score_list = [int(line.strip().split(',')[1]) for line in stu_line]
#     avg = sum(score_list) // len(score_list)
#     print(f'学生的平均成绩为{avg}')
#第二种写法
with open('./data/grades.txt') as stu_f:
    score_list = [int(line.strip().split(',')[1]) for line in stu_f.readlines()]
    print(f'学生的平均成绩为{sum(score_list)//len(score_list)}')

文件拷贝:

# 普通文本拷贝
import shutil

# with (open('./data/bill.txt', 'r', encoding='utf-8') as r_bill, open('./data/bill.txt.bat', 'w', encoding='utf-8') as w_bill):
#     while True:
#         # line = r_bill.readline()
#         line = r_bill.read(1024)
#         if len(line) <= 0:
#             break
#         w_bill.write(line)
# print('拷贝成功')


# with (open('./data/bill.txt','rb') as r_bill,open('./data/bill.txt.bat', 'wb') as w_bill):
#     while True:
#         line = r_bill.read(1024)
#         if len(line) <= 0:
#             break
#         w_bill.write(line)
# print('拷贝完毕')

shutil.copyfile('./data/bill.txt','./data/bill.txt.bat')

“”"
异常介绍:
概述:
在Python中, 我们把程序出现的所有非正常情况统称为异常, 俗称叫: Bug.
异常的处理方式:
方式1: 我们不手动处理, 交由系统自动处理, 则: 系统会将异常信息, 出现的原因, 位置打印到控制台上, 并终止程序的执行.
方式2: 我们手动处理, 处理之后, 程序会继续往下运行.
这里的手动处理就是: try.except语句.
格式:
try:
里边写可能出问题的代码
except [Exception as e]: 这里的中括号表示 可选 的意思.
这里写的是出现问题后的解决方案
else:
try中内容无问题, 则执行这里.
finally:
无论程序是否出现异常, 都会执行这里.
执行流程:
有问题, 则执行: except 的内容
/
先执行try 无论try中是否有问题, 最终都会执行 finally
\ /
无问题, 则执行: else 的内容
“”"

try:
    print(10//1)
    print('正常语句体')
except Exception as e:
    print(e)
else:
    print('没异常我也能执行')
finally:
    print('我无论如何执行')

在这里插入图片描述

try:
    print(10//0)
    print('正常语句体')
except Exception as e:
    print(e)
else:
    print('没异常我也能执行')
finally:
    print('我无论如何执行')

在这里插入图片描述
“”"
名词解释:
编码: 把我们看得懂的, 转成我们看不懂的.
例如: 计算机存数据: ‘中’ -> 转成十进制, 例如: 10023 -> 转成二进制, 假设: 1011 -> 存储到计算机中
解码: 把我们看不懂的, 转成我们看懂的.
例如: 计算机读数据: 读取到二进制, 例如: 1011 -> 转成十进制, 例如: 10023 -> 查码表得到, 该数字对应的字符, 例如: ‘中’

常用的编码:
ASCII: 美国通用信息交换码表, 比较早的码表, 目前的大多数码表都兼容它, 它主要记录: 数字, 字母, 特殊符号 及其对应数字之间的关系.
gbk: 主要针对于国内系列, 1个中文占2个字节, 其它(数字, 字母, 特殊符号)都只占1个字节.
utf-8: 万国码, 统一码, 主要针对于国际系列, 1个中文占3个字节, 其它(数字, 字母, 特殊符号)都只占1个字节.

细节:
编解码不一致, 可能会发生乱码.
“”"

# 定义字符串
s1 = '你好'

# 2.演示把我们能看懂的转成我们看不懂的
print(s1.encode(encoding='utf-8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(s1.encode(encoding='gbk'))    # b'\xc4\xe3\xba\xc3'
# 3.演示默认代码
print(s1.encode()) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
s2 = s1.encode(encoding='utf-8')
# 演示解码
print(s2.decode(encoding='utf-8'))
# 不能用gbk的解u8的 会乱码

“”"
文件介绍:
概述:
用来管理计算机数据的, 可以永久存储, 根据数据类型不同, 文件类型也不同,
例如: 文件文件, 音频, 视频…
操作步骤:
1. 打开文件.
2. 读, 写.
3. 关闭文件.
涉及到的API:
文件对象名 = open(‘文件的路径’, ‘模式’, ‘码表’)
文件对象名.read(n) # 一次性从文件中读取n个内容, 如果不写n, 则一次性读取所有.
文件对象名.readline() # 一次性从文件中读取一行.
文件对象名.readlines() # 一次性从文件中读取所有行, 每行封装成字符串, 然后整体放到列表中.
细节:
1. 传入文件路径时, 可以写绝对路径, 也可以写相对路径.
绝对路径: 固定的, 写死的路径, 以盘符开头.
相对路径: 默认是相对于当前项目的路径来讲的, 即: 你直接写 1.txt, 它对应的绝对路径时: 当前项目路径/1.txt
2. 关于路径的几个特殊写法:
./ 代表当前文件所在的路径.
…/ 代表当前文件所在的路径的 上一级路径.
“”"

print(os.getcwd())  # current work directory, 当前的工作路径.
# 相对路径
# src_f = open('data/1.txt', 'r')
src_f = open('./data/1.txt', 'r')

# 2. 读取文件数据, 并将读取到的数据打印到控制台上.
# 场景1: 一次性读取文件中所有的文件
data = src_f.read()
print(data)

# 3. 释放资源.
src_f.close()

“”"
with open语句介绍:
概述:
它是用来简化文件操作的, 让我们不必再手动释放 文件资源了, 当程序结束的时候, 会自动释放.
本质:
with open语法本质上要结合 上下文管理器对象一起使用.
格式:
with open(‘文件路径’, ‘模式’, ‘码表’) as 文件对象名:
正常的读, 写操作即可
特点:
with语句, 会在它内部的代码执行完毕后, 自动释放资源.
“”"

with open('./data/2.txt', 'r', encoding='utf-8') as src_f:
    # 读
    data = src_f.read()
    print(data)

“”"
文件的写入操作相关:
概述:
就是把数据写到文件中.
写入模式有两种:
w 覆盖写入, write
a 追加写入, append
无论上述哪种模式, 如果目的地文件不存在, 都会自动创建, 前提: 该文件的父目录必须存在.
例如: 要把数据写到: d:/aa/bb/cc/1.txt文件中, 1.txt文件可以不存在, 但是: d:/aa/bb/cc 必须存在.
写入数据的函数:
write(字符串) 把字符串写入到文件中.
writelines(容器类型) 一次性的把容器类型中的数据写到文件中.
“”"

dest_f = open('./data/3.txt', 'w', encoding='utf-8')  # 目的地文件不存在, 会自动创建.
dest_f.writelines(['aa\n', 'bb\n', 'hi', '我好\n', '期待下次见面!'])
#一次写入指定的字符串.
# dest_f.write('hello world\n')

“”"
文件操作时的模式:
r: read, 只读
w: write, 覆盖写入
a: append, 追加写入

文件的操作步骤:
1. 打开文件.
2. 正常的读写操作.
3. 释放资源
“”"

# 1. 打开文件.
with open('./data/2.txt', 'a') as dest_f:
    # 2. 往目的地文件中写数据.
    dest_f.write('hello world!\n')
    dest_f.write('hello python!\n')
     # 3. 无需手动释放资源, 该内容结束后, with语句会自动释放.

需求: 假设你正在开发一个简单的注册系统,用户可以输入自己的基本信息(如用户名、密码、邮箱等),

系统会将这些信息保存到一个文件中,名为 user_reg.txt。

# 1. 提示用户录入他/她的信息, 并接收.
uname = input('请录入您的账号:')
pwd = input('请录入您的密码:')
email = input('请录入您的邮箱:')
# print(uname, pwd, email)

# 2. 打开目的地文件.
# with open('./data/user_reg.txt', 'a', encoding='utf-8') as dest_f:  # a -> 追加写入
with open('./data/user_reg.txt', 'w', encoding='utf-8') as dest_f:  # w -> 覆盖写入
    # 3. 把上述的数据写到目的地文件中.
    dest_f.write(f'账号:{uname}\n')
    dest_f.write(f'密码:{pwd}\n')
    dest_f.write(f'邮箱:{email}\n')

    # 4. 提示即可.

标签:文件,txt,第十天,encoding,Python,data,print,分享,open
From: https://blog.csdn.net/weixin_45423893/article/details/144041816

相关文章

  • python复习笔记——2024.11.25
    2024.11.25一、类的定义二、类与实例的关系#定义一个猫类,age,name,color是属性,或者称为成员变量classCat: age=Nonename=Nonecolor=Nonecat1=Cat()#通过对象名.属性名,可以给各个属性赋值cat1.name="小白"cat2,age=2cat3.color="白色"print(f......
  • 朴素贝叶斯分类器算法Python代码实现
    1.朴素贝叶斯分类器简介朴素贝叶斯分类器是机器学习中的一种概率分类方法。它的核心思想是根据贝叶斯定理计算后验概率P(Y∣......
  • python爬虫学习之--抓取汽车之家数据
    汽车之家的数据爬取还是比较简单的,遇到的坑如下:页面的页面编码格式:汽车之家的页面编码格式有三种,分别是**“GB2312”,“ISO-8859-1"和"UTF-8-SIG”,每次使用requests模块获取页面的html时,会随机出现其中的一种,其中页面编码格式为"GB2312",“ISO-8859-1”,可以正常显......
  • Python酷库之旅-第三方库Pandas(237)
    目录一、用法精讲1116、pandas.tseries.offsets.BusinessHour.is_year_end方法1116-1、语法1116-2、参数1116-3、功能1116-4、返回值1116-5、说明1116-6、用法1116-6-1、数据准备1116-6-2、代码示例1116-6-3、结果输出1117、pandas.tseries.offsets.CustomBusiness......
  • 工程管理如何优化?2024年8款进度管理系统分享
    本文盘点了8款主流工程项目管理工具:1.Worktile;2.泛普软件;3.子筑云;4.蓝凌;5.智建云;6.Wrike;7.Smartsheet;8.用友U8。工程进度管理系统是确保工程项目按计划顺利进行的关键工具。这类系统通过提供任务调度、资源分配、进度跟踪和实时通讯等功能,帮助项目经理和团队成员保持项目的时间......
  • python基于django框架的医院分诊系统tp77r
    文章目录项目介绍具体实现截图开发技术系统性能核心代码部分展示源码/演示视频获取方式项目介绍本系统是基于MVC开发模式,通过多模块的设计,从而使同一个程序可以使用不同的表现形式。使用vue框架则让页面操作更灵活便捷。方便患者和医生查询、修改、添加、删除信息,实......
  • python基于django框架的健身房教练课程预约管理系统o3w2y
    文章目录项目介绍具体实现截图开发技术系统性能核心代码部分展示源码/演示视频获取方式项目介绍设计开发了具有管理员;个人中心、用户管理、健身教练管理、健身课程管理、健身知识管理、健身商品管理、预约教练管理、课程购买管理、健身交流、系统管理、订单管理,用户......
  • python基于django框架的环保公益众筹网站
    文章目录项目介绍具体实现截图开发技术系统性能核心代码部分展示源码/演示视频获取方式项目介绍前端(用户)浏览最新资讯和科普、发起环境保护活动、发起环境保护的众筹项目、建立和申请加入环保社团、参加环保活动、参与环保众筹、发布众筹项目、用环保币兑换物品、......
  • Python学习|科学计算基础之Matplotlib
    实验目的1.学习绘图库Matplotlib的使用。2.掌握绘图库常见的图形类型,常用的线型、颜色、标记符号。3.掌握多子图绘制的方法实验内容启动Spyder,在Spyder环境下编写完整程序完成下列练习。实验1利用[2, 3, 5, 10, 8]列表数据绘制折线图、柱形图、饼图。importmatplotl......
  • python课后练习(9.2-9.3)
    1点击查看代码importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsfromscipyimportstatsdata=[15.0,15.8,15.2,15.1,15.9,14.7,15.5,15.6,15.3,15.1,15.3,15.0,15.6,15.7,14.8,14.5,14.2,14.9,15.......