(小甲鱼python)文件永久存储(上)总结 python文件永久存储(创建打开文件、文件对象的各种方法及含义)
一、文件永久存储
如何将数据永久的存放在硬盘上,具体如下。
1.打开文件
定义:往大了讲计算机系统中由操作系统管理的具有名称的存储区域,往小了讲是生活中的PPT、Excel、word三剑客、视频文件、音频文件等。
创建打开文件: open()函数
字符串 含义
‘r’ 读取(默认)
‘w’ 写入(如果文件已存在则先截断清空文件)
‘x’ 排他性创建文件(如果文件已存在则打开失败)
‘a’ 追加(如果文件已存在则在末尾追加内容),注1
‘b’ 二进制模式,注2
‘t’ 文本模式(默认),注3
‘+’ 更新文件(读取和写入)
文件对象的各种方法及含义:
方法 含义
- f.close() 关闭文件对象
- f.flush() 将文件对象中的缓存数据写入到文件中(不一定有效)
- f.read(size=-1, /) 从文件对象中读取指定数量的字符(或者遇到 EOF 停止);当未指定该参数,或该参数为负值的时候,读取剩余的所有字符
- f.readable() 判断该文件对象是否支持读取(如果返回的值为 False,则调用 read() 方法会导致 OSError 异常)
- f.readline(size=-1, /) 从文件对象中读取一行字符串(包括换行符),如果指定了 size 参数,则表示读取 size 个字符
- f.readlines(size=-1, /) 从文件对象中读取所有字符串(包括换行符),然后按行为单位存储到列表中
如果指定了 size 参数,则表示读取 size 个字符(如果 size 参数指定的字符个数少于第一行字符个数,则仍然存放第一行字符,其他行也一样,它是按 “行” 为单位存储的) - f.seek(offset, whence=0, /) 修改文件指针的位置,从 whence 参数指定的位置(0 代表文件起始位置,1 代表当前位置,2 代表文件末尾)偏移 offset 个字节,返回值是新的索引位置
- f.seekable() 判断该文件对象是否支持修改文件指针的位置(如果返回的值为 False,则调用 seek(),tell(),truncate()方法都会导致 OSError 异常)
- f.tell() 返回当前文件指针在文件对象中的位置
- f.truncate(pos=None, /) 将文件对象截取到 pos 的位置,默认是截取到文件指针当前指定的位置
- f.write(text, /) 将字符串写入到文件对象中,并返回写入的字符数量(字符串的长度)
- f.writable() 判断该文件对象是否支持写入(如果返回的值为 False,则调用 write() 方法会导致 OSError 异常)
- f.writelines(lines, /) 将一系列字符串写入到文件对象中(不会自动添加换行符,所以通常是人为地加在每个字符串的末尾)
例1:
>>> f=open("FishC.txt","w") #存在FishC文件则打开,不存在则创建文件。
>>> f.write("I love Python")
13
>>> f.writelines(["I love FishC.\n","I love my wife."]) # 文件写内容
>>> f.close() # 文件对象关闭了,数据才能写入到文件中。执行完f.close()后,打开文件,内容才能写入。
>>>
例2:
>>> f=open("FishC.txt","r+") # r+可以读取和写入。
>>> f.readable() # 可以读取
True
>>> f.writable() # 可以写入
True
>>>
>>> for each in f: # 将文件放到for语句进行读取print(each)I love PythonI love FishC.I love my wife.
# f.read()文件读取,但没有内容。原因是文件内部有个文件指针,它负责指向文件的当前位置,当在文件中读取一个字符的时候,它这个文件指针就会指向下一个字符,直到文件结尾。
>>> f.read()
''
>>> f.tell() # 文件末尾的位置
43
>>> f.seek(0) # 修改文件指针,输入0时,指向开头。
0
>>> f.readline() #读取一行
'I love PythonI love FishC.\n'
>>>
>>> f.read() # 读取到文件的末尾
'I love my wife.'
例3:
>>> f.write("I love my WIFI")
14
>>> f.flush() # 不关闭文件,将内容写到文件中。
>>>
>>> f.truncate(29) # 截断操作,读取到29的位置
29
>>> f.close()
>>>
>>> f=open("FishC.txt","w") #打开文件什么都不做,再关闭,文件是空的。
>>> f.close()
课后题:
1. “在打开一个文件对象之后,大多数的文件操作都是在缓冲区里面进行的。因此,如果希望将文件内容保存,我们需要使用 close() 方法关闭文件对象,这样数据才能从缓冲区写入到文件中。”,那么请问大家,有没有办法在不关闭文件对象的情况下,进行内容的保存呢?
答:使用 flush() 方法。
2. 请问如果指定 readline(size=-1) 方法的 size 参数为 3,那么表示的含义是什么?
答:读取 3 个字符。
解析:虽然是 readline() 方法,但如果执行 size 参数的话,那么指定的还是读取的字符个数(而非行数)。
3. 请问下面代码会在文件中写入几行字符串呢?
>>> f = open("FishC.txt", "w")
>>> f.writelines(["FishA", "FishB", "FishC"])
>>> f.close()
答:一行。
解析:writelines() 方法虽然名字叫 “写入多行数据”,但其实它并不会自动添加换行符,所以通常我们是需要人为地将换行符加在每个字符串的末尾。
4. 请问在课堂中的代码,为什么我们写入的时候只有一个换行符,但是使用 for 语句读取并打印出来却多了一个空白行呢?
>>> f = open("FishC.txt", "w")
>>> f.writelines(["I love FishC.\n", "I love my wife."])
>>> f.close()
>>> f = open("FishC.txt", "r")
>>> for each in f:
... print(each)
...
I love FishC.I love my wife.
答:当 for 语句作用于文件对象时,是按行进行迭代的,也就是将文件中的每一行内容读取到 each 变量中,这样理论上打印出来应该是两行,而非三行。
因为 print() 函数默认是会在末尾添加一个换行符,如果将代码改成下面这样就不会了:
>>> for each in f:
... print(each, end='')
...
I love FishC.
I love my wife.
5. 请问下面代码为什么会报错?
>>> f = open("C:\Users\goodb\Desktop\FishC.txt", "w")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
答:因为路径中存在转义字符,导致文件路径解析错误。
应该这么改:
>>> f = open(r"C:\Users\goodb\Desktop\FishC.txt", "w")
6. 使用 “w” 模式打开文件之前一定要注意什么?
答:一定要注意指定文件是否已存在。
解析:如果该文件已存在并且包含了内容,那么使用 “w” 模式打开将直接抹去原有的内容,导致原有数据丢失(是很可怕的事情)。
7. 如果一个文件不存在,是否可以使用 “a” 模式将其打开?
答:可以。
解析:
相对于 “w” 模式来说,“a” 模式会比较 “温和”,指定文件如果存在的话,后者不会导致数据丢失,而是使用追加的方式将数据写入文件。
不过注意,不存在说哪一个模式更优秀的说法,因为将一切情况都考虑在内,是每一个优秀程序员的职责所在。
8. 文件指针的作用是什么?
答:指示文件对象当前读取或者写入的位置。
9. 什么是 EOF?
答:End Of the File,表示文件末尾的位置。
解析:如果在读取模式中,当文件指针指向 EOF 的时候,说明文件已经全部读取完毕。
10. 如何知道文件指针当前指定的位置?
答:可以使用 tell() 方法来追踪文件指针的位置。
f.tell() 返回当前文件指针在文件对象中的位置
课后题来自小甲鱼python永久存储(上)
相关文章:
(小甲鱼python)文件永久存储(上)总结 python文件永久存储(创建打开文件、文件对象的各种方法及含义)
一、文件永久存储 如何将数据永久的存放在硬盘上,具体如下。 1.打开文件 定义:往大了讲计算机系统中由操作系统管理的具有名称的存储区域,往小了讲是生活中的PPT、Excel、word三剑客、视频文件、音频文件等。 创建打开文件: open…...
甲酸溶液除钠离子,丙酸溶液除钾离子,医药液体除钾
水是医药行业中用量大、使用 泛的一种原料,它在生产过程中和药剂药品的制备中发挥着极其重要的作用。制药用水的原水通常为自来水或深井水,原水不能直接用作制剂用水或实验用水。因为原水中含有各类盐类和化合物,溶有CO2,还存在大…...
操作系统(2.2)--进程的描述与控制
目录 二、进程的描述 1.进程的定义和特征 1.1进程的定义 1.2进程的特征 2.进程的基本状态及转换 2.1进程的三种基本状态 2.2 三种基本状态的转换 2.3创建状态和中止状态 3.挂起操作和进程状态的转换 3.1 挂起状态的引入 3.2 引入挂起操作后三个进程状态的转换 …...
Python连接es笔记四之创建和删除操作
这一篇笔记介绍一下索引和数据的创建和删除。 其实对于索引来说,如果可以接触到 kibana 的话,可以很方便的在界面进行操作,这里简单介绍一下如何使用代码来操作索引的创建和删除。 索引的创建和删除操作 使用的还是 es 的连接:…...
字符串填充到指定长度
一、需求 在传输一个文件的时候,传输的是二进制数据,整个数据文件的结构为: 文件名称 文件本身 其中文件名称固定占30个byte,存在的情况就是,有的文件名比较长,有的文件名比较短,所有要补足30…...
macOS虚拟机安装全过程(VMware)
作为一名忠实果粉,我最大的愿望就是能够拥有一台Macbook,体验macOS,但是作为学生党,这价钱,贵到离谱啊~~~ 不过,VMware这个神器,可以解决一切问题:既然macOS可以在Macbook上运行&…...
第十三届蓝桥杯A组:选数异或——三种解法(线段树、DP、ST表)
[蓝桥杯 2022 省 A] 选数异或 题目描述 给定一个长度为 nnn 的数列 A1,A2,⋯,AnA_{1}, A_{2}, \cdots, A_{n}A1,A2,⋯,An 和一个非负整数 xxx, 给定 mmm 次查询, 每次询问能否从某个区间 [l,r][l, r][l,r] 中选择两个数使得他们的异或等于 xxx 。 输入格式 输入的第一…...
【CTF】CTF竞赛介绍以及刷题网址
CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今&…...
Springboot怎么优雅实现大文件的上传
前言在软件工程里,在处理“大”的时候一直是一个难点和难点,如并发大、数据量大、文件大,对硬件进行升级可以解决一些问题,但这并不最聪明的办法,而对于老板来说,这也不是成本最小的办法。作为开发人员来说…...
2月编程语言排行榜新鲜出炉,谁又摘得桂冠?
近日,TIOBE公布了2023年2月编程语言排行榜,本月各个语言表现如何?谁又摘得桂冠?一起来看看吧! TIOBE 2月Top15编程语言: 详细榜单查看TIOBE官网 https://www.tiobe.com/tiobe-index/ 关注IT行业的小伙伴…...
机器学习中的数学原理——模型评估与交叉验证
惭愧惭愧!机器学习中的数学原理这个专栏已经很久没有更新了!前段时间一直在学习深度学习,paddlepaddle,刷题专栏跟新了,这个专栏就被打入冷宫了。这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一…...
JAVA开发(JSP的9大内置对象和4大作用域)
背景: 在springboot横行的javaweb开发中,现在的后端开发工程师基本不需要写前端JSP页面。但是作为web开发工程师,不懂JSP的原理和作用,几乎是不行的。 JSP技术介绍: JSP(全称Java Server Pagesÿ…...
(4)EKF失控保护
文章目录 前言 4.1 什么时候会触发? 4.2 当失控保护触发时,会发生什么?...
数论----质数的求解(C/C++)
CSDN的uu,你们好呀,今天我们要学习的内容是数论哦!这也是算法题中的一类题目吧。记好安全带,准备发车咯!🚀学习数论的意义📢算法导论说:“数论曾经被视为一种虽然优美但却没什么用处…...
【电赛MSP430系列】GPIO、LED、按键、时钟、中断、串口、定时器、PWM、ADC
文章目录MSP430一、GPIO二、点亮LED三、按键控制LED四、更改主时钟五、串口通信六、串口中断七、外部中断八、定时器九、定时器中断十、PWM十一、ADCMSP430 MSP430 是德州仪器(TI)一款性能卓越的超低功耗 16 位单片机,自问世以来,…...
【Linux】进程理解与学习(Ⅱ)
环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习(Ⅰ)浅谈Linux下的shell--BASH前言章节…...
vscode 爽到起飞的快捷键
这里写目录标题1. 窗口操作2. 代码编辑3. 批量操作4. 错误处理1. 窗口操作 文件之间切换: CtrlTab 切出一个新的编辑器窗口(最多3个): Ctrl\ 切换左中右3个编辑器窗口的快捷键: Ctrl1 Ctrl2 Ctrl3 2. 代码编辑 代码格式化: ShiftAltF 向上或向下移动一行: Alt…...
vs +qt 打包.cpp和.h为DLL文件
文章目录一 编译成库1 创建一个Qt library 项目2,将已有的文件拷贝到项目目录下3 在项目中添加现有项4,拷贝头文件到需要暴露给外面使用的类的头文件中5 拷贝xxx_EXPORT的宏到需要被暴露的类的名前面6 然后点击编译 就完成了。得到的dll文件在debug里面二…...
echarts有滑块
vue下使用echarts折线图及其横坐标拖拽功能 drawLine() {let that this,lineDate [],dispatchCount [],finishCount [],newCount [];let param {// 参数};axios.post(url, param).then(function(response) {let rs response.data.data;if (rs ! undefined && rs…...
MATLAB绘制ROC曲线
ROC曲线(Receiver Operating Characteristic Curve) 1 简介 ROC曲线是用于评估二元分类模型(如Logistic回归)表现优劣的一种工具,其横轴表示假阳性率(false positive rate,FPR),即实际为负例但…...
ChatGPT前传
文章目录前言GPT概述GPT-1代GPT-1 学习目标和概念介绍GPT-1 训练数据集GPT-1 模型结构和应用细节GPT-1 效果性能和总结GPT-2代GPT-2 学习目标和概念介绍GPT-2 训练数据集GPT-2 模型结构和应用细节GPT-2 性能效果和总结GPT-3代GPT-3 学习目标和概念介绍GPT-3 训练数据集GPT-3 模…...
我的十年编程路 2020年篇
我出生在1990年,2020年到来的时候,我完成了一项成就:奔三。同时,也开启了新的征程:奔四。 2020年的春节是在广州的丈母娘家度过的,春节后大概是初五,或者是初六,我和媳妇就返回天津…...
力扣-SQL【入门】
https://leetcode.cn/study-plan/sql/?progressxhqm4sjh 目录选择595. 大的国家1757. 可回收且低脂的产品584. 寻找用户推荐人183. 从不订购的客户排序 & 修改1873. 计算特殊奖金627. 变更性别196. 删除重复的电子邮箱选择 595. 大的国家 # Write your MySQL query state…...
Vue中组件到底是什么
1.先说结论: Vue中组件本质是一个名为VueComponent的构造函数,且不是程序员定义的,是Vue.extend生成的。 2.我们使用组件时发生了什么? 比如定义了一个school,然后在页面上使用它 我们只需要写 < school/ > 或< school &…...
不同时间间隔数据对统计结果的影响
目录摘要1. 实测数据来源2. 数据分析方法3 结果分析3.1 波况分析摘要 采用不同的波浪观测方法所获得的波浪数据的时间间隔不一致,其数据的准确性须进行分析。基于大埕湾逐时周年波浪观测数据,截取不同时间间隔的波浪数据,采用统计和相关分析…...
hudi系列-数据写入方式及使用场景
hudi支持多种数据写入方式:insert、bulk_insert、upsert、boostrap,我们可以根据数据本身属性(append-only或upsert)来选择insert和upsert方式,同时也支持对历史数据的高效同步并嫁接到实时流程。 这里的使用技术组合为flink + hudi-0.11 upsert 这是hudi默认的写入方式,…...
C # FileStream文件流
本章讲述:FileStream类的基本功能,以及简单示例; 1、引用命名空间:using System.IO; 2、注意:使用IO操作文件时,要注意流关闭和释放问题! 强力推荐:将创建文件流对象的过程写在usi…...
Go语言中的保留字和运算符详解
前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云博客专家 😉😉 💕 座右铭: 先努力成长自己ÿ…...
Linux编译之(1)C语言基础
Linux编译之C语言基础 Author:Once Day Date:2023年3月11日 漫漫长路,才刚刚开始… 1.概述 在Linux下开发多源文件的C代码文件,是一定要了解Makefile的,虽然现在构建工具很多,但学习的一开始࿰…...
CPU平均负载高问题定位分析
一、Linux操作系统CPU平均负载 1.1什么是CPU平均负载 1.2 怎么查看平均负载数值 二、Linux操作系统CPU使用率和平均负载区别 CPU使用率和平均负载区别 三、阿里云Linux操作系统CPU压测环境准备 3.1 核心命令应用场景 3.2 模拟生产环境出现的多种问题环境准备 分析工具安…...
网站设计中国内优秀企业网站欣赏/it菜鸡网seo
我们寻常意义上的站长工具,是站长建站时用于对网站质量查询与制作的一些工具。 最为常见的特点,是查询SEO之于搜索引擎的数据变化,可以检测网站死链接、蜘蛛访问、HTML格式检测、网站速度测试、友情链接检查、网站域名IP查询等等。 但我们今…...
美国一级a做爰片免费网站/音乐接单推广app平台
这几天修真院又又又迎来了一位退伍的兵哥哥,所以在征得兵哥哥的允许后,我们决定把他的转行历程分享出来,供大家参考参考。 这位兵哥哥呢姓王,我们就暂时称呼他为王大锤同学吧。 大锤同学在来到修真院之前呢,已经在家颓…...
搜索引擎wordpress/seo网站建设优化
1.下面是Sping技术栈所包含的技术框架图 2.Spring Boot的一些知识点 3.Spring Boot 推荐的基础 POM 文件 名称说明spring-boot-starter核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。spring-boot-starter-amqp通过 spring-rabbit 支持 AMQP。spring-boot…...
境外社交网站上做推广/深圳市seo上词多少钱
获取输入法候选列表Description: In the following article we are going to learn how to solve problem of such type using class definitions. 说明:在下面的文章中,我们将学习如何解决使用类定义这种类型的问题。 Problem statement: 问题陈述&…...
用了wordpress的电商网站/销售推广的方法都有哪些
单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个…...
网站404错误来源/淄博seo培训
参数为-1,就是自动按其前一个参数进行转换。 数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。 举几个例子或许就清楚了,有一个数组z,它的shape属性…...