(小甲鱼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),即实际为负例但…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...

轻量安全的密码管理工具Vaultwarden
一、Vaultwarden概述 Vaultwarden主要作用是提供一个自托管的密码管理器服务。它是Bitwarden密码管理器的第三方轻量版,由国外开发者在Bitwarden的基础上,采用Rust语言重写而成。 (一)Vaultwarden镜像的作用及特点 轻量级与高性…...