Python学习(四)文件操作

文件操作

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

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

open(name, mode,encoding)

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

示例代码:

f = open('d:/hello.txt', 'r', encoding='UTF-8')

#encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定

读操作相关方法

read()方法

文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字符?),如果没有传入num,那么就表示读取文件中所有的数据

readlines()方法

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

观察上图代码,先read4个字符后(你好加回车符加世正好四个字符),再read全部内容,却只有界!!!这是因为read的时候,指针会定位到上一个read的结尾处(原理暂不清楚)

readline()方法

功能:每次读取一行

因为指针的存在,每调用一次,就会读取一行

for循环读取文件行

close()关闭文件对象

最后通过close,关闭文件对象,也就是关闭对文件的占用

如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用

with open()方法

with open('d:/hello.txt', 'r', encoding='UTF-8') as f:print(f.read())

通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法。

总结:

练习

统计python在文本中出现的次数(line.strip()是为了去除行末的换行符)

写操作相关方法

# 1.打开文件
f = open("D:/python.txt", "w")
# 2.文件写入
f.write("hello python!")
# 3.内容刷新
f.flush()

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

但是自己测试,不调用flush也可写入。

1.写入文件使用open函数的”w”模式进行写入
2.写入的方法有:

  • wirte(),写入内容
  • flush(),刷新内容到硬盘中

3.注意事项:

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

追加写入

将w换成a即可,其他用法同w模式

# 1.打开文件
f = open("D:/nihao.txt", "a")
# 2.文件写入
f.write("我是追加的内容")

练习

读取该文件,将正式的写入到一个新文件

# 打开文件得到文件对象。谁备读取
fr = open("D:/a.txt", "r", encoding="UTF-8")  
# 打开文件得到文件对象。谁备写入
fw = open("D:/a.txt.bak", "w", encoding="UTF-8")
# for箭环读取文件
for line in fr:line = line.strip()   # 去除前后空格和换行符# 判断内容、将满足的内容写出if line.split(",")[4] == "测试":continue  # continue进入下一次新坏,这一次后面的内容就跳过了# 将内容写出去fw.write(line)# 由于的面对内容进行了strip()的操作、所以要手动的写出换行符fw.write("\n")
# close2个文件对象
fr.close()
fw.close()
# 写出文件调用close()会自动flush()

结果

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

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

相关文章

【Java】处理工具类详解

在Java开发中,日期和时间的处理是一个绕不开的话题。Java自身提供了丰富的API来处理日期和时间,但是使用起来可能较为繁琐。因此,许多开发者会使用一些工具类来简化日期和时间的处理。本文将介绍一个常用的日期处理工具类——DateUtils&#…

LeetCode 2007.从双倍数组中还原原数组:哈希表——从nlogn到n

【LetMeFly】2007.从双倍数组中还原原数组:哈希表——从nlogn到n 力扣题目链接:https://leetcode.cn/problems/find-original-array-from-doubled-array/ 一个整数数组 original 可以转变成一个 双倍 数组 changed ,转变方式为将 original …

环形链表的约瑟夫问题(牛客网)

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * param n int整型 * param m int整型 * return int整型*/struct ListNode * BuyNode(int n)//创建节点和成环{ struct ListNode *pheadNULL;struct ListNode *ptailN…

吐血整理!跨境电商全年选品方向!一年12个月热点解析

一月 演出服、礼盒、贺卡、装饰品、彩带、拉花、红地毯、邀请函、荧光棒、泡泡机等。 二月 超级碗:投影仪、蓝牙音箱、超级碗电子游戏、望远镜、运动类产品等; 情人节:珠宝、服饰饰品、巧克力、香水、口红、烘焙用品、礼盒、个人护理、成…

MySQL常用命令和函数的讲解以及表之间的联结

Mysql的中一些语句的用法: 有表: CREATE TABLE book (id int(20) NOT NULL,book_name varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 书名,press varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NUL…

pymavlink 解析自定义mavlink消息。

1.下载mavlink_master包,用于将xml 文件生成对应的py文件。地址是 https://codeload.github.com/mavlink/mavlink/zip/refs/heads/master 进入目录运行python .\mavgenerate.py 呈现gui程序 2.根据发送端的消息定义格式修改接收解析段的pymavlink有关库。 可修改……

基于大数据的手机销售数据分析可视化系统,爬取京东和淘宝的的手机商品数据进行分析,Flask,Python,数据可视化

介绍 该系统主要是通过爬取京东和淘宝的的手机商品数据进行分析。爬虫python脚本通过打开浏览器授权登录后按照搜索“手机”关键字后出现的商品列表进行爬取,获取标题名,解析付款人数,品牌,评论人数,发货地&#xff0…

自用-常用词

PHP 常用 file_put_contents("awlog.txt", ---time:.date(Y-m-d H:i:s,time()).---xml:.$GLOBALS[HTTP_RAW_POST_DATA].var_export($_POST,TRUE).PHP_EOL, FILE_APPEND); error_reporting(0); register_shutdown_function(function(){ var_dump(error_get_last()…

算法学习——LeetCode力扣补充篇14(179. 最大数、43. 字符串相乘、32. 最长有效括号、543. 二叉树的直径、113. 路径总和 II)

算法学习——LeetCode力扣补充篇14 179. 最大数 179. 最大数 - 力扣(LeetCode) 描述 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大&…

吴恩达2022机器学习专项课程(一) 第二周课程实验:特征缩放和学习率(多元)(Lab_03)

备注:笔者只对个人认为的重点代码做笔记,其它详细内容请参考吴恩达老师实验里的笔记。 1.多元特征的训练集 调用load_house_data()函数,将训练集数据保存到数组中。 X,y分别存储所有训练样本的前四列,所有训练样本的…

C# argb格式的raw文件转换为RGB文件

在C#中,如果你想将一个ARGB格式的raw文件转换为RGB格式的raw文件,你需要遍历原始数据,忽略Alpha通道(透明度),并仅保留RGB值。 ARGB格式中每个像素占用32位(8位Alpha,8位Red&#x…

python中的列表、元组、字典、集合(集合篇)

数据类型定义符号访问元素是否可变是否重复是否有序列表 [ ]索引可变可重复有序元组()索引不可变可重复有序字典{key:value}键可变可重复无序集合{ }可变不可重复无序 基本概念 python语言中的集合是无序的、可变的容器类对象,所…

4.16作业

1.总结keil5下载代码和编译代码需要注意的事项 一、在编译代码时需要先点击魔术棒点击 修改flash Downlond 和pack 二、可以通过F12转跳到对应的函数中,查看函数的原型 三、注释出现乱码通过 Edit中的中的来修改 四、要先bulid在load 2.总结STM32Cubemx的使用方…

NLP学习(1)-搭建环境

前言 仅记录学习笔记,如有错误欢迎指正。 环境搭建 一、环境软件安装: 1、Anaconda安装(一款可以同时创建和管理多个python环境的软件) (1) 安装链接: https://blog.csdn.net/m0_61531676/article/details/126290…

最短路径算法(Dijkstra算法、Floyd-Warshall算法)

最短路径算法是解决图论中节点之间最短路径问题的经典算法。以下是两种常见的最短路径算法:Dijkstra算法和Floyd-Warshall算法。 Dijkstra算法 Dijkstra算法用于解决单源最短路径问题,即给定一个起点,找到起点到其他所有节点的最短路径。 …

【python】描述性统计计算偏斜度和峭度

文章目录 1.编写计算偏斜度和峭度的函数。并用自己编写的函数计算课本23页的习题1.5数据的偏斜度和峭度。2.从1.5数据中随机抽取2个容量为20的样本,分别计算它们的平均数和标准差3.请绘制给定数据的频率分布直方图,计算数据的均值、标准差、偏斜度和峭度…

【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还…

学习循环神经网络(RNN)

1. 掌握基础知识 理解RNN的基本概念:RNN是一种神经网络,它包含循环,使得网络能够维持一个内部状态,从而对序列的元素进行处理。学习RNN的工作机制:了解RNN是如何通过时间步迭代处理信息的,以及如何利用前一…

Ribbon 添加右侧区域菜单项

效果图如下所示: 类似与上图效果所示,代码如下: RibbonPage* pageHome1 ribbonBar()->addPage(tr("Home")); //实现代码: { QMenu* menuOptions ribbonBar()->addMenu(tr("Options"))…

古籍数字化平台:精校功能介绍

一、平台介绍 古籍数字化平台,本着公益性、低成本、合作共赢的三大原则,功能涵盖古籍OCR识别、族谱县志OCR识别、民国报纸OCR识别、图文逐字校对、数据著录、智能标点分段、精编排版、智能白话译文等,是一站式线上整理全流程平台。 平台集成…