Python-第八天 Python文件操作

news2024/11/18 5:42:45

Python-第八天 Python文件操作

  • 一、文件的编码
    • 1. 什么是编码?
    • 2. 为什么需要使用编码?
  • 二、文件操作
    • 1.文件的操作步骤
    • 2. 打开文件
    • 3.mode常用的三种基础访问模式
    • 4.关闭文件
  • 三、文件的读取
    • 1.文件对象有如下读取方法:
    • 2.练习:单词计数
  • 三、文件的写入
    • 1. 写入文件使用open函数的”w”模式进行写入
    • 2. 写入的方法
    • 3. 注意事项
  • 四、文件的追加
    • 1. 写入文件使用open函数的”a”模式进行追加
    • 2.追加的方法
    • 3. 注意事项
  • 五、文件操作综合案例

一、文件的编码

1. 什么是编码?

编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。
编码有许多中,我们最常用的是UTF-8编码

2. 为什么需要使用编码?

计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。
同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容。

二、文件操作

1.文件的操作步骤

想想我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走):
① 打开文件
② 读写文件
③ 关闭文件
注意:可以只打开和关闭文件,不进行任何读写

2. 打开文件

需要通过open函数打开文件得到文件对象

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下

open(name, mode, encoding)
  • name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
  • mode:设置打开文件的模式(访问模式):只读、写入、追加等。
  • encoding:编码格式(推荐使用UTF-8)

示例代码:

f = open('python.txt', 'r', encoding='UTF-8')
# encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定

注意:此时的fopen函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问,后续面向对象课程会给大家进行详细的介绍。

3.mode常用的三种基础访问模式

在这里插入图片描述

4.关闭文件

文件读取完成后,要使用文件对象.close()方法关闭文件对象,否则文件会被一直占用。

f = open("python.txt", "r")
f.close()

# 最后通过close,关闭文件对象,也就是关闭对文件的占用
# 如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用。

三、文件的读取

1.文件对象有如下读取方法:

在这里插入图片描述

  • read()
  • readline()
  • readlines()
  • for line in 文件对象
  • with open 语法
#打开文件
f= open(r'D:\vscode_workSpace\Python\day6-数据容器\测试.txt','r',encoding='UTF-8')

# read()方法:
# num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
print(f'读取10个字节:\n{f.read(10)}')
print('------------------')
print(f'读取全部:\n{f.read()}')
#打开文件
f= open(r'D:\vscode_workSpace\Python\day6-数据容器\测试.txt','r',encoding='UTF-8')

# readline()方法:一次读取一行内容
print(f'读取一行:\n{f.readline()}')
print(f'读第二行:\n{f.readline()}')
#打开文件
f= open(r'D:\vscode_workSpace\Python\day6-数据容器\测试.txt','r',encoding='UTF-8')

# readlines()方法:
# readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
print(f'读取全部行:\n{f.readlines()}')
#打开文件
f= open(r'D:\vscode_workSpace\Python\day6-数据容器\测试.txt','r',encoding='UTF-8')
i = 1
# for循环读取文件行
for line in f:
    print(f'每次循环取一行数据,这是第{i}行:{line}')
    i+=1
with open(r"C:\Users\Administrator\Desktop\平台账号密码.txt", "r") as f:
    lines = f.readlines()

print(lines)

2.练习:单词计数

通过Windows的文本编辑器软件,将如下内容,复制并保存到:word.txt,文件可以存储在任意位置

itheima itcast python
itheima python itcast
beijing shanghai itheima
shenzhen guangzhou itheima
wuhan hangzhou itheima
zhengzhou bigdata itheima

通过文件读取操作,读取此文件,统计itheima单词出现的次数

f = open(r'C:\Users\Administrator\Desktop\word.txt', 'r', encoding='UTF-8')
text = f.read()
count = text.count('itheima')
print(text)
print(count)

f.close()

三、文件的写入

1. 写入文件使用open函数的”w”模式进行写入

2. 写入的方法

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中
# f.write('需写入内容')

# 1. 打开文件
f = open(r'C:\Users\Administrator\Desktop\ceshi.txt', 'w', encoding='UTF-8')

# 2.文件写入
f.write('hello world')

# 3. 内容刷新
f.flush()

# 4.关闭文件
f.close()

直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

3. 注意事项

  • w模式,文件不存在,会创建新文件
  • w模式,文件存在,会清空原有内容
  • close()方法,带有flush()方法的功能

四、文件的追加

1. 写入文件使用open函数的”a”模式进行追加

2.追加的方法

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中
# f.write('需写入内容')

# 1. 打开文件
f = open(r'C:\Users\Administrator\Desktop\ceshi.txt', 'a', encoding='UTF-8')

# 2.文件写入
f.write('hello world123')

# 3. 内容刷新
f.flush()

# 4.关闭文件
f.close()

3. 注意事项

  • a模式,文件不存在会创建文件
  • a模式,文件存在会在最后,追加写入文件
  • 可以使用”\n”来写出换行符

五、文件操作综合案例

完成文件备份案例

需求:有一份账单文件,记录了消费收入的具体记录,内容如下:
name,date,money,type,remarks
周杰轮,2022-01-01,100000,消费,正式
周杰轮,2022-01-02,300000,收入,正式
周杰轮,2022-01-03,100000,消费,测试
林俊节,2022-01-01,300000,收入,正式
林俊节,2022-01-02,100000,消费,测试
林俊节,2022-01-03,100000,消费,正式
林俊节,2022-01-04,100000,消费,测试
林俊节,2022-01-05,500000,收入,正式
张学油,2022-01-01,100000,消费,正式
张学油,2022-01-02,500000,收入,正式
张学油,2022-01-03,900000,收入,测试
王力鸿,2022-01-01,500000,消费,正式
王力鸿,2022-01-02,300000,消费,测试
王力鸿,2022-01-03,950000,收入,正式
刘德滑,2022-01-01,300000,消费,测试
刘德滑,2022-01-02,100000,消费,正式
刘德滑,2022-01-03,300000,消费,正式
同学们可以将内容复制并保存为 bill.txt文件

我们现在要做的就是:

  • 读取文件
  • 将文件写出到bill.txt.bak文件作为备份
  • 同时,将文件内标记为测试的数据行丢弃

实现思路:

  • open和r模式打开一个文件对象,并读取文件
  • open和w模式打开另一个文件对象,用于文件写出
  • for循环内容,判断是否是测试不是测试就write写出,是测试就continue跳过
  • 将2个文件对象均close()
fr = open(r'C:\Users\Administrator\Desktop\bill.txt', 'r', encoding='UTF-8')
fw = open(r'C:\Users\Administrator\Desktop\bill.txt.bak', 'w', encoding='UTF-8')

for line in fr:
    # print(line)
    # print(line.split(',')[4])
    if line.strip().split(',')[4] == '测试':
        continue
    fw.write(line)

fr.close()
fw.close()

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

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

相关文章

nextTick 的使用和原理(面试题)

答题思路: nextTick 是做什么的?为什么需要它?开发时什么时候使用?介绍一下如何使用nextTick原理解读,结合异步更新和nextTick生效方式 1. nextTick是做什么的? nextTick是等待下一次DOM更新刷新的工具方法…

电子电器架构——怎样在请求/响应 ID确定的情况下修改发送FD 的CAN ID?

我是穿拖鞋的汉子,魔都中一个坚持长期主义的工程师! 老规矩,分享一段喜欢的文字,避免成为高知识低文化的人: 能不传话,最好不要传话;能不套话,最好不要套话;能不涉入“背后的批评”,最好不要涉入。让自己像沙滩,多大的浪来了,也是轻抚着沙滩,一波波地退去。而不要…

Ubuntu 快速切换到指定目录

现有以下场景,假设我在本地有/home/pc/Downloads/temp/Project 目录,我想快速在终端进入Project目录,需要怎么操作呢 文件管理器 由于我知道这个目录在哪个位置,那我就可以打开文件管理器,进入到这个目录&#xff0c…

关于数据治理ChatGPT是如何回答的?

这两天你的朋友圈是不是被火爆全网的ChatGPT霸屏了?你是不是已经迫不及待感受过ChatGPT带来的惊喜?那你知道ChatGPT是什么吗?面对掀起的一波话题热潮,好奇使然,小编去特别关注了一下最近火热的ChatGPT,看看…

基于Spring cloud搭建oauth2

1,OAuth2.0简介 OAuth(开发授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。 OAuth2.0是OAuth的延续&#xf…

预告| 亮点抢先看!第四届OpenI/O启智开发者大会主论坛24日启幕!

2023年2月24日至25日,第四届OpenI/O启智开发者大会将在深圳隆重举行。“算网筑基、开源启智、AI赋能”作为今年大会的主题,吸引了全球业界关注的目光。大会集结中国算力网资源基座、开源社区治理及AI开源生态建设、国家级开放创新应用平台、NLP大模型等前…

2023年云计算的发展趋势如何?还值得学习就业吗?

一、2023年云计算的发展将迎来新篇章 随着政策的正式放开,2023年的经济开始慢慢复苏,云计算在疫情期间支撑了复工复产,那么在今年对于云计算发展的限制将进一步的放开。Gartner的数据显示,到2023年,全球公共云支出将达…

MybatisPlus------条件构造器Wrapper以及QueryWrapper用法(七)

MybatisPlus------条件构造器Wapper(七) Wrapper:条件构造器抽象类,最顶端父类 AbstarctWrapper:用于查询条件封装,生成sql的where条件。 QueryWrapper:查询条件封装(可以用于查询、删除&#x…

Java必备小知识点1

Java程序类型: Applications和AppletApplications:是指在计算机操作系统中运行的程序。是完整的程序,能独立运行。被编译后,用普通的Java解释器就可以使其边解释边执行。必定含有一个main方法,程序执行时,首先寻找main方法&#x…

IDEA中如何配置SpringBoot项目多实例不同端口运行

1 问题场景 我们在进行新项目开发的时候, 可能做完一个新的模块功能并自测通过之后, 我们希望测试人员能帮我跑一些单元测试用例来进行测试验证, 但是我们又需要在此基础上技术开发新的功能, 这是我们就需要在我们的开发PC上同时…

Prometheus监控案例-kube-state-metrics

kube-state-metrics组件介绍 kube-stste-metrics项目地址:https://github.com/kubernetes/kube-state-metrics kube-stste-metrics是一个简单的组件,通过监听API Server生成有关资源对象的状态指标(例如Deployment、Pod、Node等&#xff09…

HiEV洞察 | 卖一台亏半台,激光雷达第一股禾赛隐忧仍在

作者 | 感知君Alex 编辑 | 王博2月9日晚,禾赛在万众瞩目下登陆纳斯达克,发行价19美元每股,首日涨超11%,市值超过Luminar,登顶全球市值最高的激光雷达公司。 随后两个交易日,其股价均有不同程度的涨幅&#…

08- 汽车产品聚类分析综合项目 (机器学习聚类算法) (项目八)

项目难点 主要通过聚类算法 kmeans 进行调整 . 需要找出分为几类时模型参数最佳 . (n_clusters)找出性价比较高的车 获取训练数据: train_X data.drop([car_ID,CarName],axis 1)计算模型的得分和误差: kmeans.inertia_ # inertia簇内误差平方和 from sklearn.cluster i…

【深度学习/机器学习】为什么要归一化?归一化方法详解

【深度学习/机器学习】为什么要归一化?归一化方法详解 文章目录1. 介绍1.1 什么是归一化1.2 归一化的好处2. 归一化方法2.1 最大最小标准化(Min-Max Normalization)2.2 Z-score标准化方法2.3 非线性归一化2.4 L范数归一化方法(最典…

宝塔搭建实战人才求职管理系统admin前端vue源码(二)

大家好啊,我是测评君,欢迎来到web测评。 上一期给大家分享骑士cms后台端在宝塔的搭建部署方式,这套系统是前后端分离的架构,前端是用vue2开发的,还需要在本地打包手动发布上宝塔,所以本期给大家分享&#x…

智能笔式万用表简单体验加拆解 - VC6012C - 智能电笔

简而言之,能用,甚至还挺好用的,机身大小参考上面的示意图,跟比较粗的记号笔差不多。单纯想买个万用表的话,如果不追求这种精简的外形,同价位有其他功能更强的选项。其实就是个能自动切换档位的智能万用表加…

山东大学软件学院面向对象简答题整理【个人向】

面向对象简答题整理【个人向】 0.试用面向对象语言简述改写和重定义的异同,以及方法绑定时的差别 改写是子类的方法和父类的方法具有相同的方法名和类型签名重定义是子类的方法和父类的方法方法名相同但类型签名不同在方法绑定时,改写是动态绑定&#…

kettle开发-Day38-其实chatGPT一直在身边

前言:最近chatGPT火出圈,其实不是chatGPT多智能,只是它用了一种新的交互方式来组织我们现有的知识,然后通过“高智商”的表达来使我们惊艳。但是目前或者未来的人工智能缺少创造力,他们只会整合信息目的是提高我们的效…

力扣sql简单篇练习(十八)

力扣sql简单篇练习(十八) 1 报告的记录 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT extra report_reason,count(distinct post_id) report_count FROM Actions WHERE action_dateDATE_SUB(2019-07-05,interval 1 day) AND extra IS NOT N…

突破监管“困局”,ScanV为您提供重保安全监测保障!

三月重保即将开始,重保期间是重要时间区间、重要基础设施和重要业务系统安全保障的“三重”考验期。 作为基于实战的网络安全提供商,知道创宇ScanV为您提供三月重保期间免费安全监测保障,并专门针对监管客户重保时期需求提供实战化监测保障方…