Python--文件基本操作

news2024/12/22 23:24:31

文件的存储方式

  • 在计算机中,文件是以 二进制的方式保存在磁盘上的

文本文件和二进制文件

  • 文本文件
    • 可以使用文本编辑软件查看
    • 本质上还是二进制文件
  • 二进制文件
    • 保存的内容 不是给人直接阅读的,而是提供给其它软件使用的
    • 二进制文件不能使用 文件编辑软件 查看

文件基本操作

操作文件的套路

在计算机 中要操作文件一共包含三个步骤:
1.打开文件

2.读、写文件

读 将文件内容读入内容

写 将内存内容写入文件

3.关闭文件

操作文件的函数/方法

序号函数/方法说明
1open打开文件,并且返回文件操作对象
2read将文件内容读取到内存
3write将指定内容写入文件
4close关闭文件

  • open 函数负责打开文件,并且返回文件对象
  • read /write / close 三个方法都需要通过文件对象 来调用

read方法——读取文件

  • open 函数的第一个参数是要打开的文件名(文件名区分大小写)
    • 如果文件存在,返回 文件操作对象
    • 如果文件不存在,会抛出异常
  • read 方法可以一次性 读入 并 返回文件的所有内容
  • close 方法负责关闭文件
    • 如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问
# 打开文件
f=open("D:\测试.txt","r",encoding="UTF-8")
print(f"{type(f)}")
# 读取文件 -read()
x=f.read(10)
print(f"读取10个字节的结果是:{x}")
print(f"read方法读取全部内容是:{f.read()}")
# 读取文件 -readlines()
lines=f.readlines()
print(f"lines对象的类型是:{type(lines)}")
print(f"lines对象的内容是:{lines}")
# 读取文件 -readline()
line1=f.readline()
line2=f.readline()
line3=f.readline()
print(f"第一行的内容是:{line1}")
print(f"第二行的内容是:{line2}")
print(f"第三行的内容是:{line3}")
# for循环读取文件行
for line in f.read():
    print(line,end="")

for line in f:
    print(line)
# 文件的关闭
f.close()

# with open 语法的操作文件
with open("D:\测试.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(line)

打开文件的方式

  • open 函数默认以 只读方式 打开文件,并且返回文件对象

语法如下:

访问方式说明
r以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的末尾。如果文件不存在,创建新文件进行写入
r+以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
w+以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a+以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

代码演示:

"""
演示文件的写入操作
"""
import time

# 打开文件,不存在的文件
f=open("D:/test.txt","w",encoding="UTF-8")
# write写入
f.write("Hello World!!")

# flush刷新
# f.flush()

# close关闭
f.close()           # close内置了flush功能
# 打开一个存在的文件
f=open("D:/test.txt","w",encoding="UTF-8")
# write写入,flush刷新
f.write("黑马程序员")
# close关闭
f.close()

以追加方式打开文件:

"""
演示文件的追加操作
"""

# 打开文件
f=open("D:/test.txt","a",encoding="UTF-8")
# write写入
f.write("黑马程序员")
# flush刷新
f.flush()
# close关闭
f.close()
# 打开一个存在的文件
f=open("D:/test.txt","a",encoding="UTF-8")
# write写入、flush刷新
f.write("\n是一个非常棒的官网")
f.flush()
# close关闭
f.close()

按行读取文件内容

  • read 方法默认会把文件的 所有内容一次性读取到内存
  • 如果文件太大,对内存的占用会非常严重

readline 方法

  • readline 方法可以一次读取一行内容
  • 方法执行后,会把文件指针移动到下一行,准备再次读取

代码演示:

# 读取文件 -readlines()
lines=f.readlines()
print(f"lines对象的类型是:{type(lines)}")
print(f"lines对象的内容是:{lines}")
# 读取文件 -readline()
line1=f.readline()
line2=f.readline()
line3=f.readline()
print(f"第一行的内容是:{line1}")
print(f"第二行的内容是:{line2}")
print(f"第三行的内容是:{line3}")

课后小练习:

1,单词计数

通过Windows的文本编辑器软件,将如下内容复制保存到:word.txt,文件可以存储在任意位置

通过文件读取操作,读取此文本,统计itheima单词出现的次数

# 打开文件,一读取模式打开
f=open("D:/word.txt","r",encoding="UTF-8")
# 方式1:读取全部内容,通过字符串count方法统计单词itheima的个数
content=f.read()
count=content.count("itheima")
print(f"ieheima一共出现了{count}次")
# 方式2:读取内容,一行一行读取
count=0
for line in f:
    line=line.strip()
    words=line.split(" ")
    for word in words:
        if word=="itheima":
            count+=1
# 判断单词出现次数并累计
print(f"ieheima一共出现了{count}次")
# 关闭文件
# f.close()

 2,需求:有一份账单文件,记录了消费收入的具体记录,内容如下:

可以将内容复制并保存为bill.txt

代码如下:


# 打开文件得到文件对象,准备读取
fr=open("D:/bill.txt","r",encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw=open("D:/bill.txt.bak","w",encoding="UTF-8")
# for循环读取文件
for line in fr:
    line = line.strip()
    # 判断内容,将满足的内容写出
    if line.split(",")[4]=="测试":
        continue        # continue进入下一次循环,这一次后面的内容就跳过了
    # 将内容写出去
    fw.write(line)
    # 由于前面对内容进行了strip操作,所以要手动的写出换行
    fw.write("\n")

# close2个文件对象
fw.close()
fr.close()

运行结果:

 

 

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

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

相关文章

NTN(一) 基本架构

R17将NTN纳入了3GPP规范,NTN是 non-terrestrial networks非地面网络缩写,通过卫星或无人机平台实现NR通信,在地面网络设备无法普及的地方,采用NTN覆盖,进一步提升覆盖范围。例如在沙漠、海洋等极限区域,采用…

TCP协议

TCP(Transmission Control Protocol,传输控制协议) TCP-数据格式 数据偏移 占4位,取值范围是0x0101~0x1111乘以4就是首部长度(Header Length) 保留 占6位,目前全为0 有些资料中&#xff0c…

虚幻C++ 关于怎么打印日志

虚幻C 关于怎么打印日志 先打开日志窗口认识一下! 这个就是日志窗口了! 可以对信息进行过滤! 也可以只显示某种日志! 认识完界面了!开始写代码啦! 老规矩,先给一个入口函数! #include &qu…

社交电商红利期,怎么抓住这一波自带流量

自拼多多依靠社交电商模式跃升为行业前三时,社交电商模式就被众多学者以及电商人士研究,过去一年,亚马逊、Starday、TikTok等跨境电商服务平台纷纷推出“直播”功能,试图跟上社交电商发展红利期,为平台抓取更多流量。而…

原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧

我们要做的效果是如下,就像这个app一样底部的每个菜单点击是有动画的: 此问题来源于我们的一位ui设计师他无法制作Lottie动画无法输出.json格式给到我们的安卓工程师,因此还有一种方法就是做个gif图,而这个目前他也不会只有给大家…

Mysql 索引 以及 SQL 优化 (自用笔记)

(笔记来源 https://www.bilibili.com/video/BV1Kr4y1i7ru?p88&vd_source3cf72bb393b8cc11b96c6d4bfbcbd890) 3.索引 3.1索引的语法 3.1索引的性能分析 3.1.1查看SQL执行频率 增删改为主的SQL的一般不需要优化 查询居多的SQL则需要优化 3.1.2慢查询的日志 记录了超过…

蓝牙透传模块芯片的BLE和SPP有什么区别?如何理解

一、什么是蓝牙透传芯片 蓝牙透传芯片的BLE和SPP有什么区别?如何理解呢? 首先要明确几个关键词,蓝牙芯片,蓝牙透传,蓝牙BLE,以及蓝牙SPP 第一:蓝牙芯片的概念可以参见一下网上的说明&#xff…

内网渗透测试——内网渗透测试基础

1.内网基础知识 1.工作组 再局域网中将不同的计算机按照功能(或部门)分别列入不同的工作组。 加入创建工作组:点击桌面上的计算机图标,再弹出的快捷键菜单中选择属性,然后几次点击更改设置和更改按钮。再计算机名输…

计算机组成原理题目汇总

文章目录 计算机系统概述数据的表示和运算存储器系统指令系统中央处理器总线输入输出系统计算机系统概述 MIP CPI Tc Fc相关的各种运算。 计算机系统硬件组成有:运算器、控制器、存储器、输入设备、输出设备。 冯诺伊曼机的特点有: 包含…五个部分;以二进制代码表示程序和…

异步通信技术AJAX | AJAX实现搜索联想和自动补全

目录 一:AJAX实现搜索联想和自动补全 二:HTTP状态信息 一:AJAX实现搜索联想和自动补全 (1)实现的原理 (1)什么是搜索联想?自动补全? ①百度是一个很典型的代表。在百度…

易基因|DNA甲基化揭示肌痛性脑脊髓炎/慢性疲劳综合征在复发和恢复周期中的动态表观变化

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2022年10月06日,《Int J Mol Sci》杂志发表题为“Dynamic Epigenetic Changes during a Relapse and Recovery Cycle in Myalgic Encephalomyelitis/Chronic Fatigue Syndrome”…

大数据挖掘课程案例资源介绍

大数据挖掘课程案例资源分为【基础】版,【进阶】版,不同阶段的课程难易程度不一样,对学生的基础知识掌握要求也不一样。 【基础】Python编程基础 通过学习本课程可掌握Python 开发环境的搭建、Python 基础入门、函数、面向对象编程、…

初识PHP原生类

目录 DirectoryIterator SplFileInfo DirectoryIterator 适用&#xff1a;PHP 5, PHP 7, PHP 8 __toString()方法可以获取字符串形式的文件名 <?php highlight_file(__file__); $dir $_GET[dir]; $a new DirectoryIterator($dir); foreach($a as $f){echo($f->__toS…

【Linux操作系统】编辑器天花板vim与一键配置vim

文章目录一vim简介二.命令模式1.光标定位操作2.光标移动操作3.文本复制&#xff0c;粘贴&#xff0c;删除&#xff0c;剪切操作三.插入模式四.替换模式五.底行模式1.分屏操作2.不退出vim执行Linux指令3.全局查找.替换4.退出vim六.vim配置1.各配各的2.配置方案七.添加root信任用…

高校房产管理系统平台架构分析

数图互通高校房产综合管理信息系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解…

网络规划.弱电CAD设计规范

机柜是机房布线中必不可少的设备&#xff0c;关于机柜的品牌与安装细节&#xff0c;尤其是关于机柜内部的设备布置。一个 全面的数据中心机房设计 一般包括&#xff1a;综合布线、抗静电地板铺设、棚顶墙体装修、隔断装修、UPS、专用恒温恒湿空调、机房环境监控系统、新风系统、…

VC调用AutoCAD自动化的两种方法(包装类、接口)使用详解

----哆啦刘小洋 原创&#xff0c;转载需说明出处 2022-12-29 VC调用AutoCAD自动化1 简介2 AutoCAD的Automation类型库说明文件3 包装类方式3.1 VC63.2 VC20224 接口调用方式5 两种方式对比5.1 使用便捷性5.2 兼容性5.3 结论6 后记1 简介 在工程领域&#xff0c;使用AutoCAD时经…

(小程序)后台交互--个人中心

目录 一、微信登录流程简介 二、微信用户获取用户昵称头像和昵称 ① wx.getUserProfile ——> 获取头像 三、微信登录流程代码详解 1.bindgetuserinfo——>把小程序端搭建起来 ① oa-mini 2.登录-小程序 ① wx.checkSession ② wx.login ③ wx.request 3.后台…

Python - 数据容器list(列表)

目录列表的定义列表的下标&#xff08;索引&#xff09;列表的常用操作查找某元素的下标index修改特定位置&#xff08;索引&#xff09;的元素值插入元素insert追加元素append追加元素方式extend删除元素pop与del删除某元素在列表中的第一个匹配项remove清空列表内容clear()统…

【JavaScript】获取和操作 DOM 节点

文章目录【JavaScript】获取和操作 DOM 节点一. DOM节点分类二. 获取节点(1) 获取元素节点1. 非常规元素节点2. 常规元素节点(2) 获取节点的方式三. 操作节点(1) 创建节点(2) 插入节点(3) 删除节点(4) 替换节点(5) 克隆节点(6) 节点属性四. 案例&#xff1a;微博发布【JavaScri…