[Python] 文件

这篇是Python基础语法的一个结尾了,还是可莉跟着大家一起学习哦~

可莉将这篇博客收录在:《Python》

可莉推荐的优质博主主页:Keven ’ s blog

目录

一、文件是什么

二、常用的文件操作函数

1、打开文件

2、关闭文件

3、读取文件

read( )

readline( )

readlines( )

4、写入文件

三、中文文件的处理

四、上下文管理器

可莉的话


一、文件是什么

在计算机系统中,文件是存储在磁盘或其他存储设备上的数据集合。文件可以是文本、图像、音频、视频等各种格式的数据。在Python中,文件被视为一种流式数据源,即数据可以从文件中按顺序读取,也可以写入到文件中。

二、常用的文件操作函数

1、打开文件

open()用来打开文件,例如:

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

2、关闭文件

用close的方法关闭已打开的文件:

f.close()

因为一个程序能开的文件有限,所以必须对文件在进行使用后进行关闭。

3、读取文件

读文件时需要以 “r” 的方式来打开文件

read( )

用read读文件时( )内的数字表示读几个字符

f = open('d:/test.txt', 'r')
result = f.read(2)
print(result)
f.close()

readline( )

用于读取文件的下一行。你可以多次调用这个方法,直到抛出异常为止,这通常意味着已经到达了

文件的末尾。每次调用readline()都会返回文件的下一行,或者在没有更多行时返回None。如果你

想逐行读取整个文件,可以使用一个循环,如下所示:

with open('file.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line: # 如果读取到了文件的末尾,line将为None
            break
        print(line, end='') # 打印读取到的行,注意要清除末尾的换行符

readlines( )

将文件的所有剩余行作为一个列表返回。列表中的每一项代表文件的一行。这个方法适合一次性读

取文件的所有内容,然后逐个处理每一行。示例如下:

with open('file.txt', 'r') as file:
    lines = file.readlines() # 读取文件的所有行到一个列表中
    for line in lines:
        print(line, end='') # 打印列表中的每一行

在直接循环打印时会因为print自身默认会添加换行符而且文件自身每行结束会自带换行符而使每一行之间都有两行的间距,所以我们对print的默认值参数进行修改,用end = ' '来使最后一个字符是空格,这样就避免了每两行之间的行距是两行了。

4、写入文件

  • 使用 'w'写文件时一旦打开文件成功, 就会清空文件原有的数据.
  • 使用 'a' 实现 "追加写", 此时原有内容不变, 写入的内容会存在于之前文件内容的末尾.

我们可以用 ‘w’ 和 ‘a’ 的方式来通过不同的需求进行写入文件。当使用 ‘r’ 只读的话无法对文件进行写入,会抛出异常,对已经关闭的文件也是如此。

f = open('d:/test.txt', 'w')
f.write('hello')
f.close()
f = open('d:/test.txt', 'a')
f.write('world')
f.close()

三、中文文件的处理

当我们的文档中含有中文的话可能在读取的时候不是很顺利,会出现乱码等现象。这是因为计算机在读取中文时会采用一定的编码方式,ASCII码表就是最典型的例子。当计算机按二进制读取数字后会用很大的数字来表示中文,但是不同的“编码集”中对应的字符可能不同,所以我们如果想要顺利的去读取中文的话我们必须要保证文件本身的编码方式, 和 Python 代码中读取文件使用的编码方式匹配, 才能避免出现上述问题。

  • 如果此处的编码为 ANSI , 则表示 GBK 编码。
  • 如果此处为 UTF-8 , 则表示 UTF-8 编码。

此时修改打开文件的代码, 给 open 方法加上 encoding 参数, 显式的指定为和文本相同的字符集, 即可解决对含中文文件的处理问题。

f = open('d:/test.txt', 'r', encoding='utf8')

四、上下文管理器

打开文件之后, 很容易忘记关闭它。Python 提供了 上下文管理器 , 来帮助我们来自动关闭文件。

用with语句来打开文件,当with语句块内的代码执行完毕后会自动调用关闭文件,语法结构如下:

with open(...) as file:

我们来用一个例子来更清晰的了解下用法:

with open('d:/test.txt', 'r', encoding='utf8') as f:
    lines = f.readlines()
    print(lines)

可莉的话

目前呢我们就已经把Python中的基础语法给学的差不多啦,我们从变量到循环到文件,一步步的渗透学习一定使大家受益匪浅吧~(不是的话就怪可莉)

我们现在有了基础的语法,可以干什么呢?接下来的博客可莉将带大家进行更有趣的学习,和大家一起去用Python去做一些有意思的东西吧~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA设计模式之命令模式详解

命令模式 1 命令模式介绍 命令模式(command pattern)的定义: 命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象并且能够支持请求(命令)的排队执行…

jsp课程教学管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 课程教学管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…

vue3-内置组件-Suspense

Suspense (实验性功能) <Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化。 <Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌…

最新Burp Suite入门讲解

Burp Suite的安装 Burp Suite是一款集成化的渗透测试工具&#xff0c;包含了很多功能&#xff0c;可以帮助我们高效地完成对Web应用程序的渗透测试和安全检测。 Burp Suite由Java语言编写&#xff0c;Java自身的跨平台性使我们能更方便地学习和使用这款软件。不像其他自动化测…

Offer必备算法06_位运算_十道力扣OJ题详解_由易到难

目录 位运算算法原理 ①力扣191. 位1的个数 解析代码 ②力扣338. 比特位计数 解析代码 ③力扣461. 汉明距离 解析代码 ④力扣136. 只出现一次的数字 解析代码 ⑤力扣260. 只出现一次的数字 III 解析代码 ⑥力扣面试题 01.01. 判定字符是否唯一 解析代码 ⑦力扣26…

STM32F1 - GPIO外设

GPIO 1> 硬件框图2> 工作模式 1> 硬件框图 2> 工作模式 C语言描述 /** * brief Configuration Mode enumeration */typedef enum { GPIO_Mode_AIN 0x0, // Analog Input 模拟输入 GPIO_Mode_IN_FLOATING 0x04, // input floating 浮空输入GPIO_Mode_I…

Linux第47步_安装支持linux的第三方库和mkimage工具

安装支持linux的第三方库和mkimage工具&#xff0c;做好移植前的准备工作。 编译linux内核之前&#xff0c;需要先在 ubuntu上安装“lzop库”和“libssl-dev库”&#xff0c;否则内核编译会失败。 mkimage工具会在zImage镜像文件的前面添加0x40个字节的头部信息,就可以得到uI…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表&#xff0c;也没有返回值的一个函数 定义一个有参数列表 &#xff0c;有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

Microsoft Word 超链接

Microsoft Word 超链接 1. 取消超链接2. 自动超链接2.1. 选项2.2. 校对 -> 自动更正选项2.3. Internet 及网络路径替换为超链接 References 1. 取消超链接 Ctrl A -> Ctrl Shift F9 2. 自动超链接 2.1. 选项 2.2. 校对 -> 自动更正选项 ​​​ 2.3. Internet…

java中事务的使用

文章目录 前言一、同一张表1.业务代码2.测试代码3.测试结果 二、不同表1.业务代码2.测试代码3.测试结果 总结 前言 本文将介绍在springboot中使用Transactional注解来完成对数据库事务的操作&#xff0c;保证数据一致性。 一、同一张表 1.业务代码 Controller Controller p…

二、ClickHouse简介

ClickHouse简介 前言一、行式存储二、DBMS功能三、多样化引擎四、高吞吐写入能力五、数据分区与线程级并行六、场景七、特定版本 前言 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用 C 语言编写&#xff0c;主要…

C++线程浅谈

本篇文章我们来介绍一下C 多进程 多线程的技术 1.为什要学习多线程 多进程 提高程序的性能&#xff1a;进程和线程可以使程序并发执行&#xff0c;从而充分利用计算机的多核处理器和资源&#xff0c;提高程序的执行效率和吞吐量。 实现复杂任务&#xff1a;通过将任务划分为多…

Acwing---842.排列数字

排列数字 1.题目2.基本思想3.代码实现 1.题目 给定一个整数 n&#xff0c;将数字 1∼n排成一排&#xff0c;将会有很多种排列方法。 现在&#xff0c;请你按照字典序将所有的排列方法输出。 输入格式 共一行&#xff0c;包含一个整数 n。 输出格式 按字典序输出所有排列方案…

Java安全 URLDNS链分析

Java安全 URLDNS链分析 什么是URLDNS链URLDNS链分析调用链路HashMap类分析URL类分析 exp编写思路整理初步expexp改进最终exp 什么是URLDNS链 URLDNS链是Java安全中比较简单的一条利用链&#xff0c;无需使用任何第三方库&#xff0c;全依靠Java内置的一些类实现&#xff0c;但…

读千脑智能笔记12_阻止人类灭绝

1. 阻止人类灭绝 1.1. 宇宙中唯一知道这些的物体&#xff0c;唯一知道宇宙存在的物体&#xff0c;是我们的大脑 1.2. 如果没有关于某个事物的知识&#xff0c;我们能说这个事物就一定存在吗&#xff1f; 1.2.1. 我们的大脑扮演着这样一个独特的角色&#xff0c;这很令人着迷…

使用matplotlib库在Python中绘制散点图

使用matplotlib库在Python中绘制散点图&#xff0c;展示了两个月份的气温变化。 # coding: utf-8 from matplotlib import pyplot as plt # 导入matplotlib库中的pyplot模块&#xff0c;并重命名为plt from matplotlib import font_manager # 导入font_manager模块&#xff…

代码随想录刷题笔记 DAY 23 | 修剪二叉搜索树 No.669 | 将有序数组转换为二叉搜索树 No.108 | 把二叉搜索树转换为累加树 No.538

文章目录 Day 2301. 修剪二叉搜索树&#xff08;No. 669&#xff09;1.1 题目1.2 笔记1.3 代码 02. 将有序数组转换为二叉搜索树&#xff08;No. 108&#xff09;2.1 题目2.2 笔记2.3 代码 03. 把二叉搜索树转换为累加树&#xff08;No. 538&#xff09;3.1 题目3.2 笔记3.3 代…

Linux_进程地址空间

我们用c语言写的程序&#xff0c;经过编译后形成可执行程序存放在硬盘。当运行该程序时&#xff0c;操作系统将该程序加载到内存中&#xff0c;创建进程控制块&#xff0c;变为进程&#xff0c;然后开始执行该程序。大家是否想过&#xff0c;操作系统是如何加载的呢&#xff1b…

有状态DHCPv6快速模式配置及EUI-64介绍

正文共&#xff1a;1024 字 15 图&#xff0c;预估阅读时间&#xff1a;3 分钟 我们现在已经熟悉了IPv6的地址架构&#xff08;IPv6地址架构一本通&#xff09;&#xff0c;掌握了IPv6地址的手工配置方式&#xff08;IPv6从入门到精通&#xff09;和DHCPv6有状态地址配置&#…

01.数据结构篇-链表

1.找出两个链表的交点 160. Intersection of Two Linked Lists (Easy) Leetcode / 力扣 例如以下示例中 A 和 B 两个链表相交于 c1&#xff1a; A: a1 → a2↘c1 → c2 → c3↗ B: b1 → b2 → b3 但是不会出现以下相交的情况&#xff0c;因为每个节点只有一个…
最新文章