文件—python

一、文件编码

对于同一份文件,人的视角和计算机的视角是不相同的,人看到的是文字,计算机看到的0和1组成的编码。因为计算机只能识别0和1,无法直接识别文字,那我们是如何在电脑上看到文字的呢?

计算机按照一定的编码规则,将内容翻译成0和1存入存储设备中,程序需要读取的时候,将其调出,再翻译成文字,通过下图可以更加通俗地理解这个过程。

编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。 

计算机中有许多可用编码格式: UTF-8、GBK、Big5等,他们将内容翻译成二进制的方式是不同的。UTF-8是目前全球通用的编码格式,Windows系统自带的记事本中使用的就是UTF-8编码。

文件并不拘泥于文字形式,一张图片、一段视频、一个可执行程序,都可以被保存为一个文件。

文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。

在日常生活中,文件操作主要包括打开、关闭、读、写等操作。

二、打开文件

使用open函数,可以打开一个已经存在的文件,或者创建一个新文件(即如果这个文件不存在,就会被创建)。

语法:open(name,mode,encoding)

name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。

mode:设置打开文件的模式(访问模式):只读、写入、追加等。

encoding:编码格式(推荐UTF-8)

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

模式含义如果目标文件不存在
r以只读方式打开文件,文件的指针将会放在文件开头。报错
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。创建新文件进行写入。
a打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。创建新文件进行写入。

三、读文件

3.1 read()方法

语法:文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,则默认读取文件中所有的数据。

在与当前写代码文件的同一路径下,创建一个文件,内容为:apple,命名为test1.txt。

首先用open函数打开文件test1.txt,f作为open函数的文件对象(对象是Python中一种特殊的数据类型,拥有属性和方法),然后按照read()方法的语法访问字符。

示例代码1:

f=open('E:/Code-Python/0820/test1.txt','r',encoding='UTF-8')#此处要使用正斜杠'/',如果使用反斜杠'\'会被当成转义字符
content=f.read(2)
print(content)
content=f.read(1)
print(content)
content=f.read(2)
print(content)

输出:

ap
p
le

示例代码2:

f=open('test1.txt','r',encoding='UTF-8')#如果文件与当前代码在同一路径下,name处可直接用文件名
content=f.read()#没有传入num,默认读取文件中所有的数据
print(content)

输出:

apple

3.2 readline()方法

语法:文件对象.readline()

功能:一次读取一行内容

示例代码:

f=open('test1.txt','r',encoding='UTF-8')#如果文件与当前代码在同一路径下,name处可直接用文件名
content=f.readline()#读取一行数据
print(content)
content=f.readline()#读取一行数据
print(content)
content=f.readline()#读取一行数据
print(content)
content=f.readline()#读取一行数据
print(content)
content=f.readline()#读取一行数据
print(content)
content=f.readline()#读取一行数据
print(content)

输出:

虞美人·听雨

【宋】蒋捷

少年听雨歌楼上,红烛昏罗帐。

壮年听雨客舟中,江阔云低、断雁叫西风。

而今听雨僧庐下,鬓已星星也。

悲欢离合总无情,一任阶前、点滴到天明。

3.3 readlines()方法

语法:文件对象.readlines()

功能:按照行的方式把整个文件中的内容一次性全部读取,返回一个列表,其中每一行的数据为一个元素。

示例代码:

f=open('test1.txt','r',encoding='UTF-8')#如果文件与当前代码在同一路径下,name处可直接用文件名
content=f.readlines()
print(content)

输出:

['虞美人·听雨\n', '【宋】蒋捷\n', '少年听雨歌楼上,红烛昏罗帐。\n', '壮年听雨客舟中,江阔云低、断雁叫西风。\n', '而今听雨僧庐下,鬓已星星也。\n', '悲欢离合总无情,一任阶前、点滴到天明。']

注意:“\n”是换行符。

3.4 for循环读取文件行

代码示例:

for line in open('test1.txt','r',encoding='UTF-8'):print(line)#line临时变量记录了文件的一行数据

输出:

虞美人·听雨

【宋】蒋捷

少年听雨歌楼上,红烛昏罗帐。

壮年听雨客舟中,江阔云低、断雁叫西风。

而今听雨僧庐下,鬓已星星也。

悲欢离合总无情,一任阶前、点滴到天明。

四、写文件

电脑中的文件是保存在硬盘上的,但是我们在输入文件的数据时,输入一个字符之后并不是直接保存在硬盘上,而是先保存到内存的文件缓冲区中,文件缓冲区被装满之后,文件缓冲区的所有数据被一次性输入到硬盘上。(从硬盘中读取文件也是同理,此处无须深究。)这是因为从内存中向硬盘输入数据的消耗相对较大,一个字符一个字符地挨个传输效率较低。

4.1 write()方法

语法:文件对象. write(数据)

功能:写入数据(到文件缓冲区)

代码示例:

f=open('test2.txt','w',encoding='UTF-8')
f.write('Garfield')
time.sleep(50000)#睡眠5万秒,约为833分钟,验证write()方法是否写入数据(到文件缓冲区)

运行后查看文件目录,test2.txt本来不存在,open函数创建了这个新文件:

但是打开test2.txt,里面为空,看到了新文件的创建,说明代码确实运行了,证实了 write()方法将内容写入到了内存中,而非硬盘中。

4.2 flush()方法

语法:文件对象. flush()

功能:将内存缓冲区中的数据中写入硬盘

代码示例:

import time
#创建文件
f=open('test3.txt','w',encoding='UTF-8')
#写入数据
f.write('Garfield')
#内容刷新
f.flush()
#睡眠
time.sleep(50000)#睡眠5万秒,约为833分钟,验证write()方法是否写入数据(到文件缓冲区)

运行后查看文件目录,test3.txt本来不存在,open函数创建了这个新文件,f.write('Garfield')将Garfield写入到了内存中,f.flush()将Garfield写入到了硬盘中,所以我们在test3.txt看到了数据。

4.3 'w'模式与'a'模式

以‘w’模式写入文件,如果文件中已有内容,会被清除重新写入新的内容,如下所示:

在代码同路径下创建文件test4.txt,写入内容:加菲猫。

运行代码:

#打开文件
f=open('test4.txt','w',encoding='UTF-8')
#写入数据
f.write('欧迪')
#内容刷新
f.flush()

test4.txt中原有的内容被清空,只保存了新内容:欧迪。

'a'模式下,如果该文件已存在,新的内容将会被写入到已有内容之后。

在代码同路径下创建文件test5.txt,写入内容:加菲猫爱吃千层面。

运行代码:

#打开文件
f=open('test5.txt','a',encoding='UTF-8')
#写入数据
f.write('\n欧迪爱吃蛋糕')#\n帮助换行
#内容刷新
f.flush()

test5.txt中原有的内容依然保留,并且增加了新内容:欧迪爱吃蛋糕。

五、关闭文件

5.1 close()方法

语法:f.close()

功能:关闭文件对象,也就是关闭对文件的占用 (如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用)。

close()方法还内置了flush功能

运行中(或被程序占用)的文件无法删除,我们可以利用这一点来验证一下:

f=open('test1.txt','r',encoding='UTF-8')
content=f.read()
print(content)
time.sleep(50000)

运行后打开文件目录,试去删除test1.txt,文件将一直被Python程序占用,无法删除。

使用close()方法后:

f=open('test1.txt','r',encoding='UTF-8')
content=f.read()
print(content)
f.close()
time.sleep(50000)

运行后打开文件目录,试去删除test1.txt,可以删除,说明文件test1.txt已经被解除占用。

5.2 with open ()方法

语法:

with open(name,mode,encoding) as f:

        语句块 

name:是要打开的目标文件名

mode:设置打开文件的模式(访问模式):只读、写入、追加等。

encoding:编码格式(推荐UTF-8)

功能:在with open的语句块中对文件进行操作 ,在操作完成后自动关闭close文件,避免遗忘掉close方法(可以理解为自带close关闭功能的open函数,plus版)

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

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

相关文章

【逐行注释】MATLAB下的IMM-EKF代码

IMM-EKF 基于EKF的多模型交互。以CV和CT两个模型进行交互,这里对代码进行逐行注释。 注释较多,个人理解的时候如果有误,欢迎指正。 每一行都有注释: 模型概况 二维平面上的运动模型,由CV和CT构成,基于…

C++:vector篇

前言: 本篇仅介绍vector中常用的函数接口,如果需要详细的请到官网查看。 vector是一种动态数组,能够自动调整大小。与数组类似,vector使用连续内存来存储元素,允许高效访问,但可以动态增加容量。为了应对容…

达梦数据库的系统视图v$tablespace

达梦数据库的系统视图v$tablespace 在达梦数据库(DM Database)中,V$TABLESPACE 提供了有关数据库中的表空间(Tablespace)信息。这些信息对于管理数据库存储和优化性能非常关键。表空间是数据库逻辑存储结构的一个层次…

12、stm32通过dht11读取温湿度

一、配置 二、代码 dht11.c /** dht11.c** Created on: Aug 19, 2024* Author: Administrator*/#include "main.h" #include "tim.h" #include "usart.h" #include "gpio.h" /**TIM3定时器实现us级延时*/ void Delay_us(uint16…

Midjourney提示词-动物系列-65

A super cute little anthropomorphic,sheep of the Chinese Zodiac, wearing berets ,in a Hanfu in red style,standing, eyes,cute tail,super realistic,super detail,luxurious,elegant,Unreal Engine,octane render, 8K,VRAY super realistic Pixar Style, Tiny cute…

[matlab]MATLAB实现MLP多层感知机minist手写识别预测

【测试环境】 matlab2023a 【源码文件截图】 【实现部分代码】 mlp_test.m %% MLP 2-layer to test XOR clear; clc;Mode MNIST %Mode XORif (strcmp(Mode,MNIST))% Load the digits into workspace (MNIST Test, from% http://yann.lecun.com/exdb/mnist/)num_train 100…

为什么要构建自己的 AI 代理库

上个月,我开始深入研究 AI 代理的世界。在探索这个领域时,我突然有了灵感:从现在开始我要研究 AI 代理。 最近,我一直在思考第二点。既然有很多可用的选项,为什么还要开发自己的 AI 代理库呢? 经过一番思…

SCI论文系统各阶段状态含义,一文带你全面掌握!告别投稿小白!

知识小站 SCI(Science Citation Index,科学引文索引)是由美国科学信息研究所(Institute for Scientific Information, ISI)创建的一个引文数据库。它收录了全球各学科领域中最具影响力的学术期刊,涵盖自然…

PyTorch深度学习模型训练流程的python实现:回归

回归的流程与分类基本一致,只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下: 注意:预测值与真实值图像处理为按真实值排序,图中呈现…

OCR识别行驶证(阿里云和百度云)

OCR识别行驶证(阿里云和百度云) 一、使用场景 1、通过识别行驶证,获取相关汽车信息,替代手输 二、效果图 三、代码部分: 1、阿里云OCR 1.1、控制层 PostMapping("/ocrCard") public JSONObject ocrCard(RequestPart("fi…

快速入门:使用Python构建学生成绩管理应用

前言 诸位观众,本学期我有幸学习了Python编程课程。随着课程的结束,授课教师布置了一项任务,要求我们开发一个学生信息管理系统。基于老师的要求,我个人独立完成了这项任务。今天,我希望将这个简易的程序分享给大家&a…

【数字三角形】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 510; int f[N][N]; int a[N][N]; int main() {int n;cin >> n;for(int i 1; i < n; i){for(int j 1; j < i; j){cin >> a[i][j];if(i 1 && j 1) f[i][j] a[i][j];el…

ORCAD Capture CIS 打开原理图总是卡住

原因&#xff1a;ORCAD自动进行了DRC检查。要打开的原理图中footprint未指定footprint路径。 修改&#xff1a;1、第一种方法&#xff1a;指定footprint路径 2、第二种方法&#xff1a;关闭在线DRC检查

钢包智慧管理平台

钢包智慧管理平台基于海康、大华视频监控&#xff0c;实现对钢包的全动态管理&#xff0c;实时检测钢包的温度数据变化&#xff0c;也可以随时查询时间区间内的钢包温度数据变化。 平台基于springboot vue前后台分离技术开发&#xff0c;视频基于zlmedia的转码拉流。实现了视频…

STM32————SPI硬件外设实现读写

首先是理论知识&#xff1a; 常用8位数据帧、高位先行 SPI的时钟由PCLK内部时钟分频得来&#xff0c;最大可到36MHz 精简为半双工就是去掉一根数据线后&#xff0c;用剩下的一根作为发送/接收数据&#xff1b;单工就是去掉接收线&#xff0c;只用发送线进行发送数据&#xf…

揭秘CAAC、AOPA、ALPA、ASFC和UTC无人机执照的差别及实用价值

CAAC、AOPA、ALPA、ASFC和UTC无人机执照各有其独特的差别及实用价值&#xff0c;以下是针对这些执照的详细解析&#xff1a; 一、CAAC无人机执照 颁发机构&#xff1a;中国民用航空局&#xff08;CAAC&#xff09; 差别&#xff1a; - 权威性&#xff1a;CAAC无人机执照是目…

Java面试题--JVM大厂篇之JVM 大厂面试题及答案解析(2)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到我的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客&…

Leetcode 1108. IP地址无效化

Leetcode 1108. IP 地址无效化 问题&#xff1a;给你一个有效的 IPv4 地址address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 "[.]" 代替了每个 "."。 方法1&#xff1a;对字符串挨个进行判断&#xff0c;如…

http连接未释放导致生产故障

凌晨4点运维老大收到NAT网关连接数打满报警&#xff08;官网页面接口超时&#xff09;&#xff0c;运维自己先看了看服务器相关配置&#xff0c;先后还联系了阿里云的客服&#xff0c;客服建议升级NAT网络连接阈值&#xff0c;之前是1w升级到了5w&#xff0c;但后来还是给研发打…

安装torchvision==0.5.0

安装pytorch 1.4 但是在当前配置的镜像源中找不到 torchvision0.5.0 这个版本的包。 直接找资源下载 网址添加链接描述 直接运行该命令&#xff0c;成功。 然后重复运行上面的命令就可以了 # CUDA 9.2 conda install pytorch1.4.0 torchvision0.5.0 cudatoolkit9.2 -c pyto…