Python文件基础操作(6)

news2024/9/29 21:29:42

python学习之旅(六)
👍基础语法部分笔记(一)
👍条件判断部分笔记(二)
👍循环语句部分笔记(三)
👍函数使用部分笔记(四)
👍数据容器部分笔记(五)
👍文件操作部分笔记(六)

一.文件编码

编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。

  • 思考:计算机只能识别0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?

  • 答案:使用编码技术(密码本)将内容翻译成0和1存入。

请添加图片描述

  • 计算机中有许多可用编码:UTF-8,GBK,Big5等不同的编码,将内容翻译成二进制也是不同的

  • 对内容的编码与解码必须使用同一套编码,否则会导致错误的结果

请添加图片描述

  • UTF-8是目前全球通用的编码格式,除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。

二.文件操作

在日常生活中,文件操作主要包括打开、关闭、读、写等操作

(1) 文件的打开

(1.1) 基本格式

  • 在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
  • 基本语法:
open(name, mode, encoding)
# name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
# mode:设置打开文件的模式(访问模式):只读、写入、追加等。
# encoding:编码格式(推荐使用UTF-8)
  • 示例代码:
f = open("C:/code/bill.txt", "r", encoding="UTF-8")
# encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定
# f是open函数的文件对象,可以使用对象.属性或对象.方法对其进行访问

(1.2) 打开模式

  • 文件常用的三种基础访问模式,可通过mode指定。

  • r->read(读取),w->write(写入),a->append(追加)

模式描述
r只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。

(2) 文件的读取

操作功能
文件对象.read(num)读取指定长度字节 不指定num读取文件全部
文件对象.readline()读取一行
文件对象.readlines()读取全部行,返回列表
for line in 文件对象for循环文件行,一次循环得到一行数据
文件对象.close()关闭文件对象
with open() as f通过with open语法打开文件,可以自动关闭
  • 每次读取会从上一次读取结束的位置开始
  • 每次open()中的内容只能被读取一次

请添加图片描述

(2.1) read方法

  • num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

  • 语法:文件对象.read(num)

  • 使用示例:

f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.read() # 不传入num,读取文件中所有的数据。
print(content)
# 打印
# 观止
# study

f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.read(2) # 传入num,读取2字节长度数据。
print(content)
# 打印
# 观止

(2.2) readline()方法

  • 一次读取一行内容

  • 语法:文件对象.readline()

  • 使用示例:

f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.readline()
print(f"第一行内容:{content}")  # 打印 第一行内容:观止
content = f.readline()
print(f"第二行内容:{content}")  # 打印 第二行内容:study

(2.3) readlines方法

  • 按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

  • 语法:文件对象.readlines()

  • 使用示例:

f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.readlines()
print(content)  # 打印 ['观止\n', 'study']
print(type(content))  # 打印 <class 'list'>

(2.4) for循环读取

  • for循环读取每一行数据
  • 使用示例:
# 每一个line临时变量,就记录了文件的一行数据
for line in open("C:/code/test.txt", "r", encoding="UTF-8"):
    print(line)
# 打印
# 观止
#
# study

(2.5) close关闭文件对象

  • 如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用,无法操作

  • 使用示例:

f = open("C:/code/test.txt", "r", encoding="UTF-8")
# 需要执行代码
f.close()
  • 代码中不关闭文件对象,且python程序未停止运行,无法对文件删除重命名等操作:

请添加图片描述

(2.6) 自动close

  • 通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件
  • 语法:with open() as f
  • 使用示例:
with open("C:/code/test.txt", "r", encoding="UTF-8") as f:
  f.readlines()

(3) 文件的写入

  • 使用示例:
f = open("C:/code/test.txt", "w")
# 文件如果不存在,使用”w”模式,会创建新文件
# 文件如果存在,使用”w”模式,会将原有内容清空
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()

请添加图片描述

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush的时候,内容会真正写入文件
    • close()方法,附带flush()方法的功能
  • 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

(4) 文件的追加

  • 使用w模式,每次写入会将原有内容清空,写入新内容

  • 使用a模式,文件不存在会创建文件,文件存在会在最后追加内容写入文件

  • 使用示例:

f = open("C:/code/test.txt", "a")
# 2.文件写入
f.write('study')
# 3. 内容刷新
f.flush()

请添加图片描述

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

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

相关文章

数据湖---hudi核心概念

文章目录TimelineTable & Query TypesTable Types查询类型COWMOR索引Hudi索引类型索引选择策略File Layouts元数据表元数据表的动机研究中的一些数字&#xff1a;支持多模态索引写操作操作类型UPSERTINSERTBULK_INSERTDELETE写入路径schema 演进key生成并发控制Datasource …

强强联合,怿星科技艾拉比携手斩获“铃轩奖”

12月23日—24日&#xff0c;汽车行业的年度盛典2022中国汽车供应链峰会&#xff08;CASCS2022&#xff09;盛大开幕&#xff0c;全国汽车供应链大咖再次聚首中国车谷&#xff0c;怿星科技CEO潘凯在圆桌《新汽车软件到底怎么办》上分享了观点。会议同期&#xff0c;国内最具权威…

十年底层创新,2023年亚马逊云科技或再创新高

2006年&#xff0c;亚马逊云科技推出了第一代公有云产品Amazon S3和Amazon EC2&#xff0c;由此开创了企业IT的历史——云计算从此开始改变整个企业IT市场。2013年&#xff0c;亚马逊云科技再次开创了历史&#xff0c;推出了首个自研芯片Amazon Nitro&#xff0c;由此打开了全球…

屏幕录制下载安装?这3个软件,亲测好用

很多小伙伴在使用电脑进行学习、娱乐和工作的时候&#xff0c;或多或少遇到过需要使用屏幕录制功能的时候。那么有什么特别好用的屏幕录制软件吗&#xff1f;屏幕录制下载安装怎么进行&#xff1f;今天小编分享3款软件&#xff0c;特别好用。 屏幕录制下载1&#xff1a;爱拍录屏…

朗润国际期货技术分析——日内交易图表类型

一张图表胜过千言万语。你以前听说过这句话&#xff0c;对吗&#xff1f;在日内交易员的世界里&#xff0c;一张图表往往比千言万语更有价值。它不仅告诉我们过去发生了什么&#xff0c;而且告诉我们一个市场在未来可能会做什么。它将继续走高还是走低&#xff1f;它是否处于一…

第十一篇 1+X考证 Web前端测试题MySQL篇(新)

单选题 1、下列关于MySQL备份的说法中&#xff0c;错误的是&#xff08; B &#xff09; A、备份数据库的命令是mysqldump B、备份数据库的文件扩展名必须是.sql C、“mysql”命令可以还原数据库 D、可以同时备份一个或多个数据库 [ 解析&#xff1a;.txt ] 2、在MySQL…

DBSCAN聚类的python实现

文章目录介绍DBSCAN()函数介绍实例参数选择实例整理数据选择eps和min_samples建立模型作者&#xff1a;张双双介绍 DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种基于密度的聚类算法&#xff0c;python中的sklearn.clust…

BACnet协议详解——初识BACnet架构

文章目录BACnet协议架构BACnet简化的架构简化的四层BACnet体系结构选取BACnet 网络的拓扑结构安全BACnet协议架构 国际标准化组织在制定计算机网络通讯协议标准时定义了一个模型&#xff0c;称为开放系统互联参考模型&#xff08;OSI&#xff08;ISO 7498&#xff09;。模型的…

5 JMeter断言-Jmeter响应中出现乱码时

文章目录2 JMeter2.5 JMeter断言2.5.1 响应断言2.5.2 JSON断言2.5.3 断言持续时间3 使用问题3.1 jmeter响应中出现乱码时2 JMeter 2.5 JMeter断言 作用&#xff1a;让脚本自动化执行的过程中&#xff0c;能够自动的判断执行结果是否正确&#xff0c;需要添加断言 响应断言 J…

MobTech秒验 I 作为产品经理,你知道何时做“减法”何时做“加法”嘛?

智能手机从诞生到现在&#xff0c;无论是硬件还是软件都有很大幅度的提升&#xff0c;用户的审美和挑剔力度也不断提升。如果在一个应用中使用的不顺心或者是设计得不符合用户的使用习惯&#xff0c;或许他就会卸载这个应用&#xff0c;下载另一个同类应用。因而产品经理们在垂…

STM32 HAL I2C(IIC)通信的序列传输(restart condition)

STM32 HAL I2C&#xff08;IIC&#xff09;通信的序列(Seq)传输函数(restart condition) neozng1hnu.edu.cn 文章目录STM32 HAL I2C&#xff08;IIC&#xff09;通信的序列(Seq)传输函数(restart condition)XferOption的含义HAL源码解析实验验证阅读本文需要你对I2C协议有基本…

ceph-ansible安装指南-添加BlueStore

前言&#xff1a;ceph的资料真是很少&#xff0c;摸索一断时间&#xff0c;将整理的一资料和操作经验分享。本篇为干货&#xff0c;实操。生产环境可以借鉴使用。 知识点&#xff1a; 1、建议使用LVM卷管理作为Ceph底层的存储块设备&#xff0c;因为LVM卷可以随时扩展&#xf…

石子合并(分治+贪心+DP+前缀和)

石子合并一、题目内容二、思路分析1、状态转移方程&#xff08;1&#xff09;状态表示&#xff08;2&#xff09;状态转移2、循环设计及初始化&#xff08;1&#xff09;循环&#xff08;2&#xff09;初始化3、代码实现一、题目内容 二、思路分析 这道题也是一个很经典的DP问…

灵感来源于宇宙光束 长安汽车发布全新设计理念

12月28日&#xff0c;“重构想象 创领未来”2022首届长安汽车设计日正式启幕&#xff0c;长安汽车副总裁王孝飞发表“以创新之手、触万象之境”的主题演讲&#xff0c;分享了最新设计理念&#xff0c;正式发布长安汽车全新设计理念“纵横万象”。同时&#xff0c;基于这一理念打…

【Docker社区大会】WebAssembly:无需容器的 Docker——VMware技术总监 Daniel Lopez

本文授权翻译自 Wasm Labs VMware OCTO 的 blog&#xff1a; WebAssembly: Docker without container。这是 Wasm Labs 在 2022 年 12 月 15 日在冬季Docker Community All Hands 7 的关于 DockerWebAssembly 的演讲的文字版。 作者&#xff1a;Asen Alexandrov&#xff0c;Wa…

C#,图像二值化(08)——全局阈值优化算法及其源代码

1、全局阈值算法 基于灰度直方图的优化迭代算法之一。 Iterative Scheduler and Modified Iterative Water-Filling In the downlink, the inter-cell interference is only function of the power levels and is independent of the user scheduling decisions. This suggest…

【全网最细PAT题解】【PAT乙】1005 继续(3n+1)猜想(map和vector的运用)

题目链接 1005 继续(3n1)猜想 题目描述 1005 继续(3n1)猜想 分数 25 作者 CHEN, Yue 单位 浙江大学 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里&#xff0c;情况稍微有些复杂。当我们验证卡拉兹猜想的时候&#xff0c;为了避免重复计算&#xff0c;可以记录下递…

Linux网络收包过程

一、Linux 网络收包总览 在 TCP / IP 网络分层模型里&#xff0c;整个协议栈被分成了物理层、链路层、网络层&#xff0c;传输层和应用层。物理层对应的是网卡和网线&#xff0c;应用层对应的是我们常见的 Nginx&#xff0c;FTP 等等各种应用。Linux 实现的是链路层、网络层和…

scaner从外网到内网域渗透笔记

scaner 从外网到内网域渗透 1.环境配置 1.1靶场信息 用到的虚拟机共有三个 分别是 12server-db 、12-dc 、web1 12server-db、web1 这两个可以使用桥接或者nat模式根据需求可以设置 网卡1 12-dc用的是VMnet 19 这台机子已经绑定ip 主机名ip账号和密码web1192.168.0.160we…

工具(三):Jmeter压测数据在Grafana展示

Docker 安装 InfluxDBJMeter 配置 InfluxDB数据源Grafana 配置influxdb数据源 Docker 安装 InfluxDB docker pull influxdb:1.8.6 # 拉取influxdb镜像docker run -d -p 8086:8086 --namejmeterdb influxdb:1.8.6 # 启动influxdb&#xff0c;并命名为jmeterdbdocker exec -it …