Python中对基本文件操作

article/2025/10/11 19:21:38

Python中对基本文件操作

  • 一、前言
  • 二、创建和打开文件
    • 1.打开一个不存在的文件时先创建该文件
    • 2.以二进制形式打开文件
    • 3.打开文件时指定编码方式
  • 三、关闭文件
  • 四、打开文件时使用with语句
  • 五、写入文件内容
  • 六、读取文件
    • 1.读取指定字符
    • 2.读取一行
    • 3.读取全部行


一、前言

  在Python中,内置了文件(File)对象。在使用文件对象时,首先需要通过内置的open()方法创建一个文件对象,然后通过该对象提供的方法进行一些基本文件操作。例如,可以使用文件对象的write()方法向文件中写入内容,以及使用close()方法关闭文件等。下面将介绍如何应用Python的文件对象进行基本文件操作。


二、创建和打开文件

  在Python中,想要操作文件需要先创建或者打开指定的文件并创建文件对象。这可以通过内置的open()函数实现。open()函数的基本语法格式如下:

file = open(filename[,mode[,buffering]])

参数说明:

  • file:被创建的文件对象
  • filename:要创建或打开文件的文件名称,需要使用单引号或双引号括起来。如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则需要指定完整路径。例如,要打开当前路径下的名称为status.txt的文件,可以使用“status.txt”。
  • mode:可选参数,用于指定文件的打开模式。其参数值如下面所示。默认打开模式为只读(即r)
说明
r以只读方式打开文件。文件的指针将会放在文件的开头。
rb以二进制格式打开文件,并采取只读模式。文件的指针将会放在文件的开头。一般用于非文本文件,如照片、音乐等。
r+打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件开头进行覆盖)
rb+以二进制格式打开文件,并采取写模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片、声音等。
w以只写模式打开文件
wb以二进制格式打开文件,并且采用只写模式。一般用于非文本文件,如图片、声音等
w+打开文件后,先清空原有内容,使其变为一个空的文件,对这个空文件有读写权限
wb+以二进制格式打开文件,并且采用读写模式。一般用于非文本文件,如图片、声音等
a以追加模式打开一个文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
ab以二进制格式打开一个文件,并采用追加模式。如果该文件已存在,文件指针将会放在文件的结尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
a+已读写模式打开文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
ab+以二进制格式打开一个文件,并采用追加模式。如果该文件已经存在,文件指针将会放在文件的结尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
  • buffering:可选参数,用于指定读写文件的缓冲模式,值为0表示表达式不缓存;值为1表示表达式缓存。默认为缓存模式。

1.打开一个不存在的文件时先创建该文件

  在默认的情况下,使用open()函数打开一个不存在的文件,会抛出如图所示的异常。
在这里插入图片述
  要解决上图所示的错误,主要有以下两种方法:

  • 在当前目录下(即与执行的文件相同的目录)创建一个名称为 status.txt 的文件。
  • 在调用open()函数时,指定mode的参数值为w、w+、a、a+。这样,当要打开的文件不存在时,就可以创建新的文件了。

2.以二进制形式打开文件

  使用open()函数不仅可以文本的形式打开文本文件,而且可以以二进制形式打开非文本文件,如图片、音频文件等。例如,创建一个名称为picture.jpg的图片文件(如图所示),并且应用open()函数以二进制方式打开该文件。

在这里插入图片描述
  以二进制方式打开该文件,并输出创建的对象对的代码如下:

file = open("picture.jpg", "rb")
print(file)

  执行上面代码,将显示如图所示的结果:
在这里插入图片描述
  从上图中可看出,创建的是一个BufferedReader对象。对于该对象生成后,可以再应用其他的第三方模块进行处理。例如,上面的BufferedReader对象是通过打开图片文件实现的。那么就可以将其传入到第三期的图像处理库PIL的Image模块的open()方法中,以便于对图像进行处理(如调整大小等)


3.打开文件时指定编码方式

  在使用open()函数打开文件时,默认采用GBK编码,当被打开的文件不是GBK编码时,将抛出异常,如图所示:
在这里插入图片描述
  解决该问题的方法有两种,一种直接修改文件的编码,另外一种是在打开文件时,直接指定使用的编码方式。推荐采用后一种方法。下面重点介绍如何在打开文件时指定编码方式。

  在调用open()函数时,通过添加“encoding=‘utf-8’”参数即可实现编码指定为UTF-8。如果想指定其他编码可以将单引号中的内容替换为想要指定的编码即可。

  例如,打开采用UTF-8编码保存的notice.txt文件,可以使用下面的代码:

file = open("notice.txt", "r", encoding='utf-8')

三、关闭文件

  打开文件后,需要及时关闭,以免对文件造成不必要的破坏。关闭文件可以使用文件对象close()方法实现。close()方法的语法格式如下:

file.close()    # 关闭文件

说明: close()方法先刷新缓冲区中还没写入的信息,然后再关闭文件,这样可以将没有写入到文件的内容写入到文件中。在关闭文件后,便不能再进行写入操作了。


四、打开文件时使用with语句

  打开文件后,要及时将其关闭,如果忘记关闭可能会带来意想不到的问题。另外如果在打开文件时抛出异常,那么将导致文件不能及时关闭。为了更好地避免此类事情的发生,可以使用Python提供with语句。从而实现在处理文件时,无论是否抛出异常,都能保障with语句执行完毕后关闭已经打开的文件。with语句的基本语法格式如下:

with expression as target:with-body

参数说明:

  • expression :用于指定一个表达式,这里可以是打开文件的函数open()。
  • target:用于指定一个变量,并且将expression 的结果保存到这个变量中。
  • with-body:用于指定with语句体,其中可以是执行with语句相关联的一些操作语句。如果不想执行语句,可以直接使用pass语句来代替。

  例如打开文件的语句,修改后的代码如下:

print("\n", "=" * 10, "Python经典应用", "=" * 10)
with open("massage.txt", "w") as file:  # 创建或打开保存Python经典应用信息的文件pass
print("\n 即将显示……\n")

五、写入文件内容

  在前面的内容中,虽然创建并打开了一个文件,但是该文件中并没有任何内容,它的大小是0kb。Python中的文件对象提供了write()方法,可以像文件中写入内容。write()方法的语法格式如下:

file.write(string)

参数说明:

  • file:打开的文件对象
  • string:要写入的字符串

注意: 在调用write()方法向文件写入内容的前提是,打开文件时,指定的打开模式为w(可写)或者a(追加),否则,将抛出如图所示的异常:
在这里插入图片描述


六、读取文件

  在Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容。读取文件内容主要分为以下几种情况。


1.读取指定字符

  文件对象提供了read()方法读取指定个数的字符,其语法格式如下:

file.read([size])

参数说明:

  • file:打开的文件对象
  • size:可选参数,用于指定要读取的字符个数,如果省略则一次性读取所有内容。

注意: 在调用read()方法读取文件内容的前提是,打开文件时,指定的模式为r(只读)或者r+(读写),否则,将抛出如图所示的异常。
在这里插入图片描述


  例如,读取massage.txt中的前9字符串,可以使用下列代码:

with open("massage.txt", "r", encoding='utf-8') as file:  # 打开文件string = file.read(9)  # 读取前9字符串print(string)

  例如,massage.txt文件的内容为:

Python的强度,强度到你无法想象!!!

  那么执行以上代码,将显示以下内容:
在这里插入图片描述


  使用read([size])方法读取文件时,是从文件的开头读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到新的位置,然后在应用read([size])方法读取,seek()方法基本语法如下:

file.seek(offset[,whence])

参数说明:

  • file:表示已经打开的文件对象。
  • offset:用于指定移动的字符个数,其具体位置与whence有关。
  • whence:用于指定从什么位置开始计算。值为0表示从文件头开始计算,值为1表示从当前位置计算,值为2表示从文件尾开始计算,默认为0。

注意: 对于 whence参数,如果在打开文件时,没有使用b模式(即rb),那么只允许从文件头开始计算相对位置,从文件尾计算时就会引发如图所示的异常:
在这里插入图片描述


  例如,想要从文件的第6个字符开始读取2个字符,可以使用下列代码:

with open("message.txt", "r") as file:  # 打开文件file.seek(5)              # 移动指针到新的位置string = file.read(2)	# 读取2个字符print(string)

  如果message.txt文件中内容为:

123456789

  那么执行上面代码,将显示以下结果:
在这里插入图片描述

说明: 在使用seek()方法时,offset的值是按照一个汉字占两个字符、英文和数字点占一个字符计算的,这个与read(size)方法不同。


2.读取一行

  在使用read()方法读取文件时,如果文件很大,一次读取完全部内容到内存,容易造成年内存不足,所以采取逐行读取。文件对象提供了readline()方法用于每次读取一行数据。readline()方法的语法格式如下:

file.readline()

  其中,file为打开的文件对象,同read()方法一样,打开文件时,指定的模式为r(只读)或者r+(读写)。

print("\n", "=" * 20, "Python经典应用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:  number = 0  # 记录行号while True:number += 1line = file.readline()if line == "":breakprint(number, line, end="\n")
print("\n ", "=" * 20, "over" * 20, "\n")

  如果message.txt文件中内容为下图所示:
在这里插入图片描述
  执行上面代码,将显示以下内容:
在这里插入图片描述


3.读取全部行

  读取全部行的作用同调用read()方法时不指定size类似,只不过读取全部行时,返回的是一个字符串列表,每个元素为文件的一行内容。读取全部行,使用的是文件对象的readlines()方法,其语法格式如下:

file.readlines()

  其中,file为打开的文件对象,同read()方法一样,打开文件时,指定的模式为r(只读)或者r+(读写)。

  例如,通过readlines()方法读取message.txt文件中所有内容,并输出读取内容结果,代码如下:

print("\n", "=" * 20, "Python经典应用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:message = file.readlines()  # 读取全部信息print(message)print("\n ", "=" * 20, "over", "=" * 20, "\n")

  执行上面代码,将显示以下内容:
在这里插入图片描述
  从该运行结果中可以看出readlines()方法的返回值为一个字符串列表。在这个字符串列表中,每个元素为一行内容。如果文件较大时,采用这种方法输出读取的文件内容会很慢。这时可以将列表的内容逐行输出,例如,代码可以修改为以下内容:

print("\n", "=" * 20, "Python经典应用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:messageall = file.readlines()  # 读取全部信息for message in messageall:print(message)  # 输出一条信息
print("\n ", "=" * 20, "over", "=" * 20, "\n")

  执行上面代码,将显示以下内容:
在这里插入图片描述


Python练一练


http://chatgpt.dhexx.cn/article/vcm9Oi4k.shtml

相关文章

C语言——文件操作

文章目录 1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭 4. 文件的顺序读写4.1 fgetc与fputc4.2 fgets与fputs4.3 fscant与fprintf4.3.1 fprintf4.3.2 fscanf 4.4 fread与fwrite4.4.1 fwrite4.4.2 f…

C语言之文件操作

目录 为什么使用文件 文件名 文件指针 流 文件的打开和关闭 前言 文件的打开方式 文件打开关闭函数 fopen函数 fclose函数 文件的顺序读写 fputc函数 fgetc函数 fputs函数 fgets函数 fprintf函数 fscanf函数 fwrite函数 fread函数 文件的随机读写 fseek函…

文件操作(图解)

文件操作 1、文件是什么?1.1 程序文件1.2 数据文件1.3 文件名 2、文件的打开和关闭2.1 文件指针2.2 文件的打开和关闭 3、文件的顺序读写4、文件的随机读写4.1 fseek4.2 ftell4.3 rewind 5、文本文件和二进制文件6、文件读取结束的判定6.1 被错误使用的feof 7、文件…

C++中的文件操作

目录 文件操作C中的文件操作时基于面向对象的C中文件类型分为两种:操作文件的三大类(这些类都属于标准模板库):1 文本文件1.1 写文件写文件步骤如下:文件打开方式: 1.2 读文件读取文件数据的四种方式按照喜好记前三个中…

什么是文件操作?为什么要有文件操作?

文章目录 前言一、什么是文件1.1 程序文件1.2 数据文件 二、文件的打开与关闭2.1 文件指针2.2 文件的打开与关闭2.3 文件读写详情表!(重点)2.4 文件的顺序读写!(重点)2.5 文件的随机读写2.5.1 fseek2.5.2 f…

常见文件操作函数

目录 一、文件的打开和关闭 1、文件指针 2、文件打开和关闭 二、文件的顺序读写 1、fgetc()和fputc()函数 2、fgets()和fputs()函数 3、fscanf()和fprintf()函数 4、fread()和fwrite()函数 三、文件的随机读写 1、fseek函数 2、ftell函数 3、rewind函数 四、文本文…

【Linux】Linux的文件操作

文件操作对于不少编程初学者来说都是一件头疼的事情,不管你学习的是什么编程语言,C/C/Java/Go/Python ,因为我们学习到的文件相关的操作对你来说都是一个黑盒,我们只是知道我们应该怎么使用相应的文件函数进行操作,而对于内部的实…

文件操作(详解)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 ​ 3.2 文件的打开和关闭 4. 文件的顺序读写 4.1 对比一组函数: 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 7. 文件读取结束的…

c语言中的文件操作

目录 引入: 一、文件的打开和关闭 1.文件名 2.文件指针 3.文件的打开和关闭 二、对文件如何操作和流 1.对文件操作相关功能: 2.流 三、文件操作函数(顺序读写) 1."w"输出流: 2."r" 输入流 3."wb"与&…

C语言 文件操作

文件操作在我们的使用中虽然占的不多,但是有些时候,还是需要这部分的知识的。比如,我们做了一个C语言版的售卖系统。现在的想法是在关闭的时候保存这次的结果,然后下一次继续使用,这个时候,就可以使用文件操…

手把手教你学Python之文件操作(一文掌握文件操作)

目录 1、Python中文本文件的读写 2、Python中常用的文件与文件夹操作方法 3、Python中Excel文件的读写 4、Python读取Excel文件案例​ 为了保存数据,方便修改和分享,数据通常以文件的形式存储在磁盘等外部存储介质中。根据逻辑上编码不同可将文件大致…

Linux文件操作

目录 一、系统api与库函数的关系二、open和close函数介绍2.1 open方法介绍2.2 close方法介绍 三、open/create函数创建文件时的权限设置四、read和write函数的介绍和使用4.1 read函数介绍4.2 write函数介绍4.3 如何使用 五、lseek函数的介绍和使用5.1 介绍5.2 如何使用 六、阻塞…

python文件操作(一看就懂)

python文件操作 历史遗留问题文件介绍打开文件转定义字符Python格式化字符串的替代符以及含义Python的转义字符及其含义 💕Final~ 历史遗留问题 现在我们接着上文讲,如果没有看过我上篇文章的萌新朋友们可以先去看看,不然一会儿容易读的你满…

Linux的文件操作命令

接下来将介绍Linux中一些常用的文件操作命令,今天先演示五个类型的命令操作,内容不是特别的全,找的几个典型的常用的演示,想要全面的可以另找资料了解一下,推荐大家跟着敲跟着做才能加深记忆,祝大家学的开心…

Linux —— 文件操作

目录 1.内核提供的文件系统调用 1.1open和close 1.2标记位 1.3write和read 2.文件描述 2.1文件描述符 2.2文件描述符分配规则 3.重定向 3.1最“挫”的重定向 3.2使用系统调用 3.3重定向原理 3.4让我们的"shell"支持重定向操作 4.一切皆文件 5.缓冲区 5…

文件操作详解

1.文件的概念 文件的基本概念   所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁…

文件操作(C语言)

目录 一、前言 二、文件的打开和关闭 三、文件的读写 1.文件的顺序读写 2.文件的随机读写 四、文件结束的判定 一、前言 当我们向写好的通讯录程序中输入信息时,有时我们希望能保存输入的信息,不用每次打开这个程序都要重新输入,这时就…

文件操作详解(超级详细)

正常我们的程序在执行的时候程序结束后,会将所有数据清楚,那么我们应该如何保存数据呢?这里我们就需要用文件操作。 一、文件的打开和关闭 1.文件打开、关闭函数—fopen、fclose //打开文件 FILE * pf fopen ( const char * filename, const…

虚拟机安装黑苹果【虚拟机安装,黑苹果安装,黑苹果无法全屏问题】(这应该全网最全的资源了吧~)

一,资源下载 链接:https://pan.baidu.com/s/1cyGiDvkJinx8dnB57gO7UQ 提取码:i615 PS:里面有虚拟机资源,Drawin.ios文件和苹果镜像文件 这里只讲如何用虚拟机安装黑苹果,不讲如何安装虚拟机,下…

VMware虚拟机安装黑苹果10.15 || AMD R7 5800处理器

VMwar版本:16Pro 链接:https://pan.baidu.com/s/1qGHEynWSV4YS9WSNonxiuA?pwdazvh 提取码:azvh macOS链接,版本为Catalina 10.5。这个版本后,os安装包就过10G了,会特别卡。 链接:https://pan…