【python基础】文件-初识文件
文本文件可存储的数据量是非常多的。每当需要分析或修改存储在文件中的信息时,首先就是读取文件到内存中,为此可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。
1.读取文件
1.1读取整个文件
要读取文件,需要一个包含几行文本的文件。下面首先来创建一个poems文本文件,,里面存储着一首古诗。

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

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

在这个程序中,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循环:

我们打印每一行时,发现多出来了空白行,因为在这个文件中,每行的末尾都有一个看不见的换行符,而print函数也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文本,一个来自print函数。要消除这些多余的空白行,可以将文本的换行符删除,或者让print函数不输出换行符
方法1,rstrip函数用于删除字符串末尾的换行符,编写程序如下所示:

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

2.结合列表
2.1创建一个包含文件各行内容的列表
使用withi关键字时,open函数返回的文件对象变量只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块外使用该列表。
编写程序如下所示:

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

3.写入文件
保存数据的最简单的方式之一是将其写入到文件中,通过将输出写入文件,即便关闭包含程序输出的终端窗口,这些输出也依然存在。可以在程序结束运行后查看这些输出,可与别人分享输出文件,还可编写程序来将这些输出读取到内存中并进行处理。
3.1写入空文件
要将文本写入文件,在调用open需要提供另一个实参变量,该实参变量是open函数操作文件的模式,告诉Python我们要写入打开的文件。为明白其中的工作原理,我们来将一条简单的消息存储到文件中,而不是将其输出到终端窗口。
其语法格式:
open('文件名称',文件模式)
编写程序如下所示:

我们打开new_file.txt查看一下

发现是我们想要的效果。
注意:
1.调用open函数时,提供了两个实参变量,一个是文件名称,另一个是文件模式。
| 实参变量值 | 文件模式 |
|---|---|
| 'r' | 只读模式,默认模式 |
| 'w' | 只写模式 |
| 'r+' | 读写模式 |
| 'a' | 附加模式 |
2.如果要写入的文件不存在,open函数将自动创建它。然而,以写入模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
3.write是文件对象的写入方法,作用是将一个字符串写入文件。
4.Python只能将字符串写入文本文件,要将数值数据存储到文本文件中,必须先使用str函数将其转换为字符串格式。
3.2写入多行
write函数不会在写入的文本末尾添加换行符,因此如果写入多行时没有指定换行符,文件看起来可能不是我们预想的结果:
编写程序如下所示:

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

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

我们打开new_file.txt查看一下

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

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

我们可以发现,文件原来的内容还在,最后的两行是我们新添加的内容。
【python基础】文件-初识文件的更多相关文章
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- python基础——元组、文件及其它
Python核心数据类型--元组 元组对象(tuple)是序列,它具有不可改变性,和字符串类似.从语法上讲,它们便在圆括号中,它们支持任意类型.任意嵌套及常见的序列操作. 任意对象的有序集合:与字符串 ...
- python基础知识六 文件的基本操作+菜中菜
基础知识六 文件操作 open():打开 file:文件的位置(路径) mode:操作文件模式 encoding:文件编码方式 f :文件句柄 f = open("1.t ...
- Python基础7:文件操作
[ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...
- python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...
- python基础之删除文件及删除目录的方法-乾颐堂
下面来看一下python里面是如何删除一个文件及文件夹的~~ 首先引入OS模块 import os 删除文件: os.remove() 删除空目录: os.rmdir() 递归删除空目录: os.re ...
- 2015/9/9 Python基础(10):文件和输入输出
文件对象文件对象不仅可以用来访问普通的磁盘文件,而且也可以访问其它任何类型抽象层面上的“文件”.一旦设置了合适的“钩子”,你就可以访问文件类型接口的其它对象,就好像访问的是普通文件一样.文件对象的处理 ...
- python基础之删除文件及删除目录的方法
下面来看一下python里面是如何删除一个文件及文件夹的~~ 1 2 3 4 5 6 7 8 #首先引入OS模块 import os #删除文件: os.remove() #删除空目录: os.r ...
- Python基础:25文件
一:文件对象 文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 一旦设置了合适的"钩子", 你就可以访问具有文件类型接 ...
- python基础dict,集合,文件
字典是一种key:value的数据类型dict1{ 'stud1':'孙礼昭', 'stud2':'slz', 'stud3':'sunlizhao',}dict是无序的,key是唯一的 天生去重增 ...
随机推荐
- CentOS8 搭建Kubernetes
CentOS8 搭建Kubernetes 主机名 IP 组件 k8s-master 192.168.40.128/24 kubeadm.kubelet.kubectl.docker-ce k8s-no ...
- [Java SE]Java8新特性——默认方法
1 简述 默认方法就是接口可以有实现方法,而且可以不需要实现类去实现其方法 默认方法(default void hello()) := 一个在接口里面有了一个(默认)实现的方法 1. 子类优先继承父类 ...
- PMD插件:你必须掌握的代码质量工具!
当今的软件开发需要使用许多不同的工具和技术来确保代码质量和稳定性.PMD是一个流行的静态代码分析工具,可以帮助开发者在编译代码之前发现潜在的问题.在本文中,我们将讨论如何在Gradle中使用PMD,并 ...
- JS 对输入框进行限制(常用的都有)
文章来源 http://www.soso.io/article/24096.html 1.文本框只能输入数字代码(小数点也不能输入) 代码如下: <input οnkeyup="thi ...
- 从零开始配置深度学习环境:CUDA+Anaconda+Pytorch+TensorFlow
本文适用于电脑有GPU(显卡)的同学,没有的话直接安装cpu版是简单的.CUDA是系统调用GPU所必须的,所以教程从安装CUDA开始. CUDA安装 CUDA是加速深度学习计算的工具,诞生于NVIDI ...
- 电脑上跨平台的电子书阅读器Koodo Reader
https://wbsu2003.gitee.io/2021/04/30/%E7%94%B5%E8%84%91%E4%B8%8A%E8%B7%A8%E5%B9%B3%E5%8F%B0%E7%9A%84 ...
- css 文本超出,显示省略号
单行文本省略号 显示省略号 text-overflow: ellipsis; overflow: hidden; max-width: 110px; 文本不换行 wor ...
- Python分支结构之if语句
程序结构 程序三种结构 顺序 循环 分支 分支结构 分支结构基本语法 if 条件表达式: 语句1 语句2 语句3 ...... 条件表达式就是计算结果必须为布尔值的表达式 表达式后面的冒号不能少 注意 ...
- Python-解三元一次方程
需要解的方程组为: x + y + z = 26 x - y = 1 2x - y + z = 18 下面进入代码实现: 1.导入数学计算库 numpy import numpy as np 2.生成 ...
- SpringBoot如何自定义一个starter
SpringBoot starter,大家应该在平常写项目中应该非常熟悉,很多依赖都会提供集成SpringBoot的依赖,这样我们用起来就非常顺手,开箱就能用,那如何自定义一个starter呢? Sp ...