首页 > 编程语言 >【python基础】文件-初识文件

【python基础】文件-初识文件

时间:2023-06-24 17:22:43浏览次数:29  
标签:文件 函数 python 写入 初识 换行符 open 读取

文本文件可存储的数据量是非常多的。每当需要分析或修改存储在文件中的信息时,首先就是读取文件到内存中,为此可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。

1.读取文件

1.1读取整个文件

要读取文件,需要一个包含几行文本的文件。下面首先来创建一个poems文本文件,,里面存储着一首古诗。
image

读取文件,其语法格式如下所示:
image

注意这个文本文件是utf-8编码格式的,如果是windows默认的gbk模式,在读取时可能存在错误编写程序如下所示:
image

在这个程序中,with open('poems.txt') as poems_file: 这条语句做了大量的工作。

1.open函数。要以任何方式使用文件,哪怕仅仅是输出其内容,都得先打开文件,这样才能访问它。

2.open函数接受一个参数,这个参数是要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。

3.open函数返回一个表示文件的对象,Python将这个对象存储在as后面的变量中。

4.关键字with再不需要访问文件后将其关闭。在这个程序中,注意到我们调用了open函数。但没有调用close函数。这里可以调用open函数和close函数来打开和关闭文件。但这样做时,如果程序存在bug,导致close语句未执行,文件将不会关闭。如果未妥善地关闭文件可能会导致数据丢失或受损。但如果在程序中过早的调用close(),那么在我们使用文件的时候它已关闭,我们无法访问。并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构,可让Python去自行确定,我们只管打开文件,并在需要时使用它,Python会在合适的时候自动将其关闭。

5.有了poems.txt文件对象变量,我们使用read方法读取这个文件的全部内容,并将其作为一个字符串存储在变量poems_content中。

1.2.逐行读取

读取文件时,常常需要检查其中每一行;可能要在文件中查找特定的信息或者要以某种方式修改文件中的文本。要以每次一行的方式检查文件,可对文件对象使用for循环:
image

我们打印每一行时,发现多出来了空白行,因为在这个文件中,每行的末尾都有一个看不见的换行符,而print函数也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文本,一个来自print函数。要消除这些多余的空白行,可以将文本的换行符删除,或者让print函数不输出换行符

方法1,rstrip函数用于删除字符串末尾的换行符,编写程序如下所示:

image

方法2,print函数不输出换行符,编写程序如下所示:

image

2.结合列表

2.1创建一个包含文件各行内容的列表

使用withi关键字时,open函数返回的文件对象变量只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块外使用该列表。

编写程序如下所示:

image

2.2利用列表对文件的内容进行操作

我们发现上面输出的list列表中,数据元素是带有'\n'换行符的,我们如何删除它,这里也是用到rstrip函数,编写程序如下所示:
image

3.写入文件

保存数据的最简单的方式之一是将其写入到文件中,通过将输出写入文件,即便关闭包含程序输出的终端窗口,这些输出也依然存在。可以在程序结束运行后查看这些输出,可与别人分享输出文件,还可编写程序来将这些输出读取到内存中并进行处理。

3.1写入空文件

要将文本写入文件,在调用open需要提供另一个实参变量,该实参变量是open函数操作文件的模式,告诉Python我们要写入打开的文件。为明白其中的工作原理,我们来将一条简单的消息存储到文件中,而不是将其输出到终端窗口。

其语法格式:

open('文件名称',文件模式)

编写程序如下所示:

image

我们打开new_file.txt查看一下

image

发现是我们想要的效果。

注意:

1.调用open函数时,提供了两个实参变量,一个是文件名称,另一个是文件模式。

实参变量值 文件模式
'r' 只读模式,默认模式
'w' 只写模式
'r+' 读写模式
'a' 附加模式

2.如果要写入的文件不存在,open函数将自动创建它。然而,以写入模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。

3.write是文件对象的写入方法,作用是将一个字符串写入文件。

4.Python只能将字符串写入文本文件,要将数值数据存储到文本文件中,必须先使用str函数将其转换为字符串格式。

3.2写入多行

write函数不会在写入的文本末尾添加换行符,因此如果写入多行时没有指定换行符,文件看起来可能不是我们预想的结果:

编写程序如下所示:

image

我们打开new_file.txt查看一下,
image

发现两个字符串连接在一起了。

要让每个字符串都单独占一行,需要在write()语句中包含换行符,编写程序如下所示:

image

我们打开new_file.txt查看一下

image

3.3附加到文件

如果要给文件添加内容,而不是覆盖原有的内容,可以用附加模式打开文件。以附加模式打开文件时,Python不会在返回文件对象时清空文件,而是将写入到文件的行都添加到文件末尾。如果指定的文件不存在,Python将创建一个空文件。

编写程序如下所示:
image

我们打开new_file.txt,查看一下,
image

我们可以发现,文件原来的内容还在,最后的两行是我们新添加的内容。

标签:文件,函数,python,写入,初识,换行符,open,读取
From: https://www.cnblogs.com/lbprogram/p/17501348.html

相关文章

  • Python os模块
    Pythonos模块os模块用于提供系统级别的操作os.getcwd()#获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname")#改变当前脚本工作目录;相当于shell下cdos.curdir#返回当前目录:('.')os.pardir#获取当前目录......
  • Python sys模块
    Pythonsys模块sys模块用于提供对解释器相关的操作sys.argv#命令行参数List,第一个元素是程序本身路径sys.exit(n)#退出程序,正常退出时exit(0)sys.version#获取Python解释程序的版本信息sys.maxint......
  • Python hashlib模块
    Pythonhashlib模块hashlib模块用于加密相关的操作,代替了md5模块和sha模块主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法#md5废弃importmd5hash=md5.new()hash.update('admin')printhash.hexdigest()#sha废弃importshahash=sha.new()ha......
  • 【VBA】如何在WORD文件的每个自动序号后修改字符
    要想将文章中所有的:1)实例文字替换为1)#示例文字可以使用VBA来进行操作。保存一份源文档的副本。VBA的修改是难以撤销的。也可以先复制一部分出来到新文档进行试验。打开Word文档。按下"Alt"+"F11"打开VisualBasicforApplications(VBA)编辑器。在VBA......
  • 在 Python 中,类型属于对象,变量是没有类型的
    在Python中,类型属于对象,变量是没有类型的:━━━━━━━━━━━━━━━━━━━━━━━━━a=[1,2,3]a="w3cschool"以上代码中,[1,2,3]是list类型,"w3cschool"是string类型,而变量a是没有类型,她仅仅是一个对象的引用(一个指针),可以是list类型对象,也可以指向是stri......
  • Python 模块(转载)
    Python常用模块模块分类自定义模块开源模块内置模块自定义模块定义模块情景一情景二情景三导入模块Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:importmodulefrom......
  • nginx 多个配置文件
    1、2、nginx.confworker_processes1;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;gzipon;keepalive_timeout5000;include/eeeee/nginx-1.23......
  • jupyter中把ipynb文件导出为pdf
     1、安装Python包,其中6.4.4是根据提示确认的必须要大于等于6.4.4pip3installnbconvert==6.4.42、安装Inkscape,官网地址:https://inkscape.org/zh-hans/?switchlang=zh-hans3、安装pandoc,官网地址:https://pandoc.org/installing.html4、安装Tex,可参考:https://nbconvert.re......
  • Windows电脑为例,设置minio文件服务分布式部署
    前言关于分布式文件存储,之前我也是使用fastdfs,那为什么突然选择minio?1、它可以多平台部署2、搭建起来不是很复杂3、github近30K的star什么是minio?构建高性能的云原生数据机器学习,大数据分析,海量存储的基础架构MinIO支持各种应用程序数据工作负载在中国:阿里巴巴、腾讯、百......
  • python: Treeview Control binding data using tkinter and ttkbootstrap GUI
     """StudentUI.py读文件类date2023-06-24edit:GeovinDu,geovindu,涂聚文ide:PyCharm2023.1python11"""importdatetimeimportsysimportosfromtkinterimportttkfromtkinterimport*fromtkinter.ttkimport*fromttk......