Python基础语法第七章之文件

news2024/12/30 2:12:24

目录

一、文件

1.1文件是什么

1.2文件路径

1.3文件操作

1.3.1 打开文件

1.3.2关闭文件

1.3.3写文件

1.3.4读文件

二、使用上下文管理器 

2.1上下文管理器


一、文件

1.1文件是什么

变量是把数据保存到内存中. 如果程序重启/主机重启, 内存中的数据就会丢失.
要想能让数据被持久化存储, 就可以把数据存储到硬盘中. 也就是在 文件 中保存.

在 Windows "此电脑" 中, 看到的内容都是 文件.

通过文件的后缀名, 可以看到文件的类型. 常见的文件的类型如下:

  • 文本文件 (txt)
  • 可执行文件 (exe, dll)
  • 图片文件 (jpg, gif)
  • 视频文件 (mp4, mov)
  • office 文件 (.ppt, docx)
  • ...... 

1.2文件路径

一个机器上, 会存在很多文件, 为了让这些文件更方面的被组织, 往往会使用很多的 "文件夹"(也叫做目录)来整理文件,实际一个文件往往是放在一系列的目录结构之中的,为了方便确定一个文件所在的位置, 使用 文件路径 来进行描述。

目录之间的分隔符, 可以使用 \ 也可以使用 / . 一般在编写代码的时候使用 / 更方便.

上述以 盘符 开头的路径, 我们也称为 绝对路径.
除了绝对路径之外, 还有一种常见的表示方式是 相对路径. 相对路径需要先指定一个基准目录, 然后以基准目录为参照点, 间接的找到目标文件. 咱们课堂上暂时不详细介绍.
描述一个文件的位置, 使用 绝对路径 和 相对路径 都是可以的. 对于新手来说, 使用 绝对路径 更简单更好理解, 也不容易出错.

1.3文件操作

1.3.1 打开文件

使用内建函数 open 打开一个文件.

f = open('d:/test.txt', 'r')
  • 第一个参数是一个字符串, 表示要打开的文件路径
  • 第二个参数是一个字符串, 表示打开方式. 其中 r 表示按照读方式打开. w 表示按照写方式打开. a表示追加写方式打开.
  • 如果打开文件成功, 返回一个文件对象. 后续的读写文件操作都是围绕这个文件对象展开.
  • 如果打开文件失败(比如路径指定的文件不存在), 就会抛出异常.

1.3.2关闭文件

使用 close 方法关闭已经打开的文件.

f.close()

使用完毕的文件要记得及时关闭!

flist = []
count = 0
while True:
    f = open('d:/test.txt', 'r')
    flist.append(f)
    count += 1
    print(f'count = {count}')

如上面代码所示, 如果一直循环的打开文件, 而不去关闭的话, 就会出现上述报错.
当一个程序打开的文件个数超过上限, 就会抛出异常.
注意: 上述代码中, 使用一个列表来保存了所有的文件对象. 如果不进行保存, 那么 Python 内置的垃圾回收机制, 会在文件对象销毁的时候自动关闭文件.但是由于垃圾回收操作不一定及时, 所以我们写代码仍然要考虑手动关闭, 尽量避免依赖自动关闭

1.3.3写文件

文件打开之后, 就可以写文件了. 

  • 写文件, 要使用写方式打开, open 第二个参数设为 'w'
  • 使用 write 方法写入文件.
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()

用记事本打开文件, 即可看到文件修改后的内容.

  • 如果是使用 'r' 方式打开文件, 则写入时会抛出异常.
f = open('d:/test.txt', 'r')
f.write('hello')
f.close()

  • 使用 'w' 一旦打开文件成功, 就会清空文件原有的数据.
  • 使用 'a' 实现 "追加写", 此时原有内容不变, 写入的内容会存在于之前文件内容的末尾. 
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()
f = open('d:/test.txt', 'a')
f.write('world')
f.close()
  • 针对已经关闭的文件对象进行写操作, 也会抛出异常.
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()
f.write('world')

1.3.4读文件

  • 读文件内容需要使用 'r' 的方式打开文件
  • 使用 read 方法完成读操作. 参数表示 "读取几个字符"
f = open('d:/test.txt', 'r')
result = f.read(2)
print(result)
f.close()
  • 如果文件是多行文本, 可以使用 for 循环一次读取一行.
f = open('d:/test.txt', 'r')
for line in f:
print(f'line = {line}')
f.close()

注意: 由于文件里每一行末尾都自带换行符, print 打印一行的时候又会默认加上一个换行符, 因此打印结果看起来之间存在空行.
使用 print(f'line = {line}', end='') 手动把 print 自带的换行符去掉.

  • 使用 readlines 直接把文件整个内容读取出来, 返回一个列表. 每个元素即为一行.
f = open('d:/test.txt', 'r')
lines = f.readlines()
print(lines)
f.close()

保证编码格式统一:f = open('d:/test.txt', 'r', encoding='utf8')


二、使用上下文管理器 

2.1上下文管理器

打开文件之后, 是容易忘记关闭的. Python 提供了 上下文管理器 , 来帮助程序猿自动关闭文件.

  • 使用 with 语句打开文件.
  • 当 with 内部的代码块执行完毕后, 就会自动调用关闭方法.
with open('d:/test.txt', 'r', encoding='utf8') as f:
    lines = f.readlines()
    print(lines)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel 两列数据中相同的数据进行同行显示

一、要求 假设您有两个列,分别是A列和B列,需要在C列中找出A列对应的B列的值。 二、方案 方法1:寻常思路 凸显重复项对A列单独进行筛选–按颜色进行排序,然后升序对B列重复上述操作即可 方法2:两个公式 VLOOKUP 纵向查找…

【分享帖】LCD的MCU接口和SPI接口详解

LCD(Liquid Crystal Display)液晶屏,作为电子产品的重要组成部分,是终端用户与电子产品交互的重要载体。现在市场上的LCD,按照尺寸、功能、接口、用途等分为很多种,本文主要介绍如下两种LCD物理接口&#x…

tinymce插件tinymce-powerpaste-plugin——将word中内容(文字图片等)直接粘贴至tinymce编辑器中

TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有:UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。 TinyMCE的优势: 开源可商用,基于LGPL2.1 插件丰富,自带插件基本涵盖日常…

Cesium态势标绘专题-直线箭头(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

网络安全大厂面试题

自我介绍 有没有挖过src? 平时web渗透怎么学的,有实战吗?有过成功发现漏洞的经历吗? 做web渗透时接触过哪些工具 xxe漏洞是什么?ssrf是什么? 打ctf的时候负责什么方向的题 为什么要搞信息安全,对…

照片加水印软件帮你搞定版权保护

嘿,亲爱的摄影爱好者!是时候为你的照片保驾护航了!想象一下,你在拍摄完一张美轮美奂的照片后,你为它加上个性化的水印,让每一个观者都知道这份艺术的创作者是你!是不是觉得有点激动呢&#xff1…

幻方问题(Magic Squares)

目录 基本介绍 丢勒-幻方 高阶幻方矩阵 习题 1. 幻方检测 2. durerperm 3. 颜色分配表 4. 幻方矩阵的逆矩阵 5. 幻方矩阵的秩 基本介绍 nn幻方是含有1到n^2的整数数组,排列后是的每一行、每一列、正反两条主对角线上数字的和都是相同的。对于每个n>2都有…

Java类的默认构造函数

什么情况下存在默认构造函数 说明 如果一个Java类没有显式包含构造函数的声明,那么隐含着有一个默认构造函数。 示例 定义一个类B,没有显式声明构造函数,所以存在一个默认构造函数: package com.thb;public class B {public …

你说你会Java手动锁,但你会这道题吗???

按照这个格式输出你会吗??? 你说你不会,接下来认真看认真学了。 1.首先引入原子类。AtomicInteger num new AtomicInteger(0); 什么是原子类? 就是可以保证线程安全的原子操作的数据类型。 有什么作用?…

Selenium结合Unittest

1、Unittest:单元测试框架 ——对软件中的最小可测单元进行检查和验证 作用: 提供用例组织及执行提供丰富的断言方法(判断实际结果与预期结果是否一致)提供丰富的日志及测试结果 2、Unittest核心要素 TestCase(测…

易混淆-for循环中的break与return

1、for循环中的return不仅会跳出循环,还还会跳出当前函数。 2、for循环中的break只会跳出循环,结束for循环。 例:

Git的远程操作与多人协作

"爱在地图上剥落,我离孤单几公里~" 我们目前所说、所学的内容(工作区、暂存区、版本库)都只是存在于本地上,也就是说你的一台机器上只有这么一个你维护的版本库。可是Git是一个分布式版本控制系统,这又是什…

国产化 | 走近人大金仓-KingbaseES数据库

引入 事务隔离级别 || KingbaseES数据库 开篇 1、KingbaseES数据库 百度百科:金仓数据库的最新版本为KingbaseES V8, KingbaseES V8在系统的可靠性、可用性、性能和兼容性等方面进行了重大改进,支持多种操作系统和硬件平台支持Unix、Linux…

搭建测试平台开发(一):Django基本配置与项目创建

一、安装Django最新版本 1 pip install django 二、创建Django项目 首先进入要存放项目的目录,再执行创建项目的命令 1 django-admin startproject testplatform 三、Django项目目录详解 1 testplatform 2 ├── testplatform  # 项目的容器 3 │ ├──…

2.03 PageHelper分页工具

步骤1&#xff1a;在application.yml中添加分页配置 # 分页插件配置 pagehelper:helperDialect: mysqlsupportMethodsArguments: true步骤2&#xff1a;在顶级工程pom文件下引入分页插件依赖 <!--5.PageHelper --> <dependency><groupId>com.github.pagehe…

《golang设计模式》第一部分·创建型模式-02-原型模式(Prototype)

文章目录 1. 概念1.1 简述1.2 角色1.3 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概念 1.1 简述 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 1.2 角色 Prototype&#xff08;抽象原型类&#xff09;&#xff1a;它是声明克隆方法的接口…

python多进程编程(模式与锁)

multiprocessing的三种模式 fork&#xff0c;【拷贝几乎所有资源】【支持文件对象/线程锁等传参】【unix】【任意位置开始】【快】spawn&#xff0c;【run参数传参必备资源】【不支持文件对象/线程锁等传参】【unix、win】【main代码块开始】【慢】forkserver&#xff0c;【ru…

数据库提供的系统函数及添加外键约束

十八、数据库提供的系统函数 1、数值型函数 2、字符串函数 注意&#xff1a;使用utf8mb4或者utf8汉字都在第三个字节&#xff0c;是Unicode编码&#xff0c;所以一个汉字占3个字节 GBK编码&#xff0c;一个汉字两个字节 char_length()不管编码&#xff0c;中文英文都一个 下标…

Linux下安装RabbitMQ教程

官方安装指南&#xff1a;https://www.rabbitmq.com/install-rpm.html 我们将要安装的RabbitMQ的版本是3.8.2 el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm - rabbitmq/rabbitmq-server packagecloud 不需要单独安装Erlang环境。 2. 环境配置&#xff1a; 前提&#xff…

吃透《西瓜书》第三章 线性模型

&#x1f349; 吃瓜系列 教材&#xff1a;《机器学习》 周志华著 &#x1f552;时间&#xff1a;2023/7/25 &#x1f4d3; 参考&#xff1a;周志华《机器学习》西瓜书啃书指导 &#x1f4d3; 参考&#xff1a;第3章-一元线性回归 前言 什么是回归&#xff1f; 回归&#xff1…