当前位置: 首页 > news >正文

【人生苦短,我学 Python】(8)文件的读写和过滤器

目录

  • 简述 / 前言
  • 1. 文件的操作
  • 2. 过滤器
    • 2.1 more —— 逐屏显示数据
    • 2.2 sort —— 排序
    • 2.3 more 和 sort 一起用
  • 文章传送门

简述 / 前言

上一篇我们介绍了 Python 的输入(input)和输出(print),以及如何通过命令行给程序传入参数。这篇文章就讲讲 Python 怎么读取我们的文件(比如 txt, excel 等),当然现在我们只用 Python 自带的模块和方法来介绍,后期我们还会讲一个数据处理经常用来操作表格的第三方库(pandas)。

1. 文件的操作

  • 通过内置函数 open()创建或打开文件对象;

    • 格式open(file, mode='r', buffering=-1, encoding=None)
    • 使用 open() 函数时,可以指定打开文件的模式 mode 为:‘r’(只读)、‘w’(写入,写入前删除旧内容)、‘x’(创建新文件,如果文件存在,则导致FileExistsError)、‘a’(追加)、‘b’(二进制文件)、‘t’(文本文件,默认值)、‘+’(更新,读写)
    • 特别要注意的是,当我们在读写文件的时候,最好配合异常机制一起写,即下面这段代码,关于异常处理会在之后介绍,这里仅仅有个印象即可!
      try:    # 这部分一定会执行的f = open("test.txt", mode='r')
      except: # 如果出现异常就会执行这段代码,否则跳过这段代码print(f'文件读取异常,未正确打开文件!')
      finally:    # 最终不管是否有异常,都会执行这段代码,确保关闭打开的文件f.close()
      
  • 通过文件对象的实例方法 write/writelines,可以写入字符串到文本文件;

  • 通过文件对象的实例方法 read/readline,可以读取文本文件的内容;

  • 文件读写完成后,应该使用 close 方法关闭文件。

例子1:读取当前代码文件。
编写代码,代码如下,文件名为:CSDN.py,这里不再用异常处理。

下面的代码像 whileif 看不懂可以跳过,这些会在下一篇文章介绍(之前忘了写这章的内容了…),所以只要看 open, close, readline 就可以了。

# !/usr/bin/env python3
# _*_ coding: utf-8 _*_ 
# @author:森林
# @time:2023/11/22 13:04import sysfilename = sys.argv[0]  # 所读取并输出的就是本程序文件CSDN.py
f = open(filename, 'r', encoding='utf-8')  # 打开文件
line_no = 0  # 统计行号
while True:line_no += 1  # 行号计数line = f.readline()  # 读取行信息if line:print(line_no, ":", line, end='')  # 输出行号和该行内容else:break
f.close()  # 关闭打开的文件

输出(在终端 terminal 输入 python CSDN.py):

D:\MyCode\Python_Code\PyCharm>python CSDN.py
1 : # !/usr/bin/env python3
2 : # _*_ coding: utf-8 _*_
3 : # @author:森林
4 : # @time:2023/11/22 13:04
5 :
6 : import sys
7 : 
8 : filename = sys.argv[0]  # 所读取并输出的就是本程序文件CSDN.py
9 : f = open(filename, 'r', encoding='utf-8')  # 打开文件
10 : line_no = 0  # 统计行号
11 : while True:
12 :     line_no += 1  # 行号计数
13 :     line = f.readline()  # 读取行信息
14 :     if line:
15 :         print(line_no, ":", line, end='')  # 输出行号和该行内容
16 :     else:
17 :         break
18 : f.close()  # 关闭打开的文件

要是每次写 .close() 可能你会很烦,或者有时候忘记写了,这就麻烦大了,因此 Python 也提供了另外一种安全打开文件的方式(with 语句——能确保打开的文件自动关闭)!

语法with open(file, mode) as f:

# !/usr/bin/env python3
# _*_ coding: utf-8 _*_ 
# @author:森林
# @time:2023/11/22 13:04import sysfilename = sys.argv[0]  # 所读取并输出的就是本程序文件CSDN.py
line_no = 0  # 统计行号
with open(filename, 'r', encoding='utf-8') as f:  # 使用with语句实现上下文管理协议for line in f:line_no += 1  # 行号计数print(line_no, ":", line, end='')  # 输出行号和该行内容

输出(在终端 terminal 输入 python CSDN.py):

D:\MyCode\Python_Code\PyCharm>python CSDN.py
1 : # !/usr/bin/env python3
2 : # _*_ coding: utf-8 _*_
3 : # @author:森林
4 : # @time:2023/11/22 13:04
5 :
6 : import sys
7 :
8 : filename = sys.argv[0]  # 所读取并输出的就是本程序文件CSDN.py
9 : line_no = 0  # 统计行号
10 : with open(filename, 'r', encoding='utf-8') as f:  # 使用with语句实现上下文管理协议
11 :     for line in f:
12 :         line_no += 1  # 行号计数
13 :         print(line_no, ":", line, end='')  # 输出行号和该行内容

在 Python 中还有标准输入、输出、错误流、重定向、管道,但是基本上没怎么用过,所以这里就不进行介绍了。


2. 过滤器

2.1 more —— 逐屏显示数据

格式python 程序名字.py 参数1 参数1 ... 参数n | more

D:\MyCode\Python_Code\PyCharm>python CSDN.py | more
1 : # !/usr/bin/env python3
2 : # _*_ coding: utf-8 _*_
3 : # @author:森林
4 : # @time:2023/11/22 13:04
5 :
6 : import sys
7 :
8 : filename = sys.argv[0]  # 所读取并输出的就是本程序文件CSDN.py
9 : line_no = 0  # 统计行号
10 : with open(filename, 'r', encoding='utf-8') as f:  # 使用with语句实现上下文管理协议
11 :     for line in f:
-- More  --

每按一次 enter 都会多显示一行,显示完全部内容就会终止程序!

2.2 sort —— 排序

格式python 程序名字.py 参数1 参数1 ... 参数n | sort

D:\MyCode\Python_Code\PyCharm>python CSDN.py | sort
1 : # !/usr/bin/env python3
10 : with open(filename, 'r', encoding='utf-8') as f:  # 使用with语句实现上下文管理协议
11 :     for line in f:
12 :         line_no += 1  # 行号计数
13 :         print(line_no, ":", line, end='')  # 输出行号和该行内容
2 : # _*_ coding: utf-8 _*_
3 : # @author:森林
4 : # @time:2023/11/22 13:04
5 :
6 : import sys
7 :
8 : filename = sys.argv[0]  # 所读取并输出的就是本程序文件CSDN.py
9 : line_no = 0  # 统计行号

它会按照你输出的内容先进行排序再输出,比如这里是先按照第一位进行排序,所以先输出1开头的行,如果第一位相同,就看第二位,依次类推…

2.3 more 和 sort 一起用

D:\MyCode\Python_Code\PyCharm>python CSDN.py | sort | more
1 : # !/usr/bin/env python3                                                                                                                                                               
10 : with open(filename, 'r', encoding='utf-8') as f:  # 使用with语句实现上下文管理协议
11 :     for line in f:
12 :         line_no += 1  # 行号计数
13 :         print(line_no, ":", line, end='')  # 输出行号和该行内容
2 : # _*_ coding: utf-8 _*_
3 : # @author:森林
4 : # @time:2023/11/22 13:04
5 :
6 : import sys
7 :
-- More  --

文章传送门

上一篇文章:【人生苦短,我学 Python】(7)命令行参数、键盘输入【input】和输出【print】
下一篇文章:【人生苦短,我学 Python】(9)分支判断和循环

相关文章:

【人生苦短,我学 Python】(8)文件的读写和过滤器

目录 简述 / 前言1. 文件的操作2. 过滤器2.1 more —— 逐屏显示数据2.2 sort —— 排序2.3 more 和 sort 一起用 文章传送门 简述 / 前言 上一篇我们介绍了 Python 的输入(input)和输出(print),以及如何通过命令行给…...

智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.饥饿游戏算法4.实验参数设定5.算法结果6.…...

leetCode算法—10. 正则表达式匹配

10.给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 难度:困难 *** 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹…...

Android Studio 实现音乐播放器

目录 一、引言 视频效果展示: 1.启动页效果 2.登录页效果 3.注册页效果 4.歌曲列表页效果 5.播放页效果 二、详细设计 1.登陆注册功能 2.音乐列表页面 2.音乐播放功能 三、源码获取 一、引言 Android初学者开发第一个完整的实例项目应该就属《音乐播放器…...

端口占用命令 netstat (centos)+netstat (windows)

linux 1.使用 netstat 命令查看端口占用情况 netstat -tlnp 使用 -p 选项查看进程信息。 使用 -t 选项列出 TCP 协议的连接:类似(使用 -u 选项列出 UDP 协议的连接:) 2.查找占用指定端口号的应用信息 netstat -tlnp | grep 3…...

Python-基于fastapi实现SSE流式返回(类似GPT)

最近在做大模型对话相关功能,需要将对话内容流式返回给前端页面(类似GPT的效果)。下面直接说下如何实现: 1.首先导入fastapi和sse流式返回所需要的包 from fastapi import APIRouter, Response, status from sse_starlette.sse …...

iOS中宿主APP与录屏扩展进程数据传递方式

背景 在iOS生态系统中,应用程序的功能不再局限于单一的宿主应用,而是可以通过扩展进程实现更丰富的用户体验和功能。其中一种引人注目的扩展是录屏功能,它使用户能够捕捉设备屏幕上的活动,无论是游戏过程、教育演示还是其他应用场…...

Windows系统下的可用RADIUS软件-[资源]

RADIUS协议相关原理介绍,可参考博客RADIUS协议原理介绍报文分析配置指导-RFC2865/RFC2866。 本文用于提供和介绍Window系统下几种可用的RADIUS软件。主要涉及软件有radius_ping(绿色免安装版)和WinRadius(绿色免安装版&#xff09…...

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十五:基础数据模块相关功能实现

一、本章内容 本章使用已实现的公共组件实现系统管理中的基础数据中的验证码管理、消息管理等功能。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址: 基于VUE3+Layui从头搭建通用后台管理系统合集-验证码功能实现 3.2 西瓜…...

MAC苹果笔记本电脑如何彻底清理垃圾文件软件?

苹果电脑以其流畅的操作系统和卓越的性能而备受用户喜爱。然而,随着时间的推移,系统可能会积累大量垃圾文件,影响性能。本文将介绍苹果电脑怎么清理垃圾文件的各种方法,以提升系统运行效率。 CleanMyMac X是一款专业的Mac清理软件…...

【Linux C | 文件I/O】文件的打开关闭 | open、creat、colse 函数

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

【BEV感知】BEVFormer 融合多视角图形的空间特征和时序特征 ECCV 2022

前言 本文分享BEV感知方案中,具有代表性的方法:BEVFormer。 它基于Deformable Attention,实现了一种融合多视角相机空间特征和时序特征的端到端框架,适用于多种自动驾驶感知任务。 主要由3个关键模块组成: BEV Que…...

Amazon Toolkit — CodeWhisperer 使用

tFragment--> 官网:https://aws.amazon.com/cn/codewhisperer/?trkcndc-detail 最近学习了亚马逊云科技的 代码工具,感慨颇多。下面是安装 和使用的分享。 CodeWhisperer,亚马逊推出的实时 AI 编程助手,是一项基于机器学习…...

Flink SQL填坑记2:Flink和MySQL的Bigdata类型不同导致ClassCastException报错

最近在开发Flink SQL的时候,需要关联Kafka事实表和MySQL维表,得到的数据写入Phoenix表中,但是其中有个字段,Kafka表、MySQL表和Phoenix表都是BigData类型,但是在实现的时候却报“java.math.BigInteger cannot be cast to java.lang.Long”异常,从报错信息来看,是由于Big…...

本地MinIO存储服务如何创建Buckets并实现公网访问上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等…...

通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题

问题描述: 在最近的一个项目中,有一个存在较久,并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用,该应用部署在Tomcat服务器上。起初,应用程序可以通过HTTP协议访问,一切运行都没…...

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 (一)新建文件夹 (二)打开文件夹 (三)打开运行终端 (四)创建基础项目 (五)创建app 1. 安装Django &#xf…...

C# .Net学习笔记—— Expression 表达式目录树

一、什么是表达式目录树 (1)Expression我们称为是表达式树,是一种数据结构体,用于存储需要计算,运算的一种结构,这种结构可以只是存储,而不进行运算。通常表达式目录树是配合Lambda一起来使用的…...

《论文阅读28》Unsupervised 3D Shape Completion through GAN Inversion

GAN,全称GenerativeAdversarialNetworks,中文叫生成式对抗网络。顾名思义GAN分为两个模块,生成网络以及判别网络,其中 生成网络负责根据随机向量产生图片、语音等内容,产生的内容是数据集中没有见过的,也可…...

一个正则快速找到在ES中使用profile的时产生慢查询的分片

在es中使用profile分析慢查询的时候,往往因为分片过多,或者因为查询条件太复杂,分析的结果几十万行。在kibana上点半天,也找不到一个耗时长的分片。 kibana上可以通过正则来匹配。其实我们只需要匹配到耗时大于10秒的请求。 检索语…...

链接未来:深入理解链表数据结构(一.c语言实现无头单向非循环链表)

在上一篇文章中,我们探索了顺序表这一基础的数据结构,它提供了一种有序存储数据的方法,使得数据的访 问和操作变得更加高效。想要进一步了解,大家可以移步于上一篇文章:探索顺序表:数据结构中的秩序之美 今…...

Python tkinter控件全集之组合选择框 ttk.ComboBox

Tkinter标准库 Tkinter是Python的标准GUI库,也是最常用的Python GUI库之一,提供了丰富的组件和功能,包括窗口、按钮、标签、文本框、列表框、滚动条、画布、菜单等,方便开发者进行图形界面的开发。Tkinter库基于Tk for Unix/Wind…...

Axure之中继器的使用(交互动作reperter属性Item属性)

目录 一.中继器的基本使用 二.中继器的动作(增删改查) 2.1 新增 2.2 删除 2.3 更新行 2.4 效果展示 2.5 模糊查询 三.reperter属性 在Axure中,中继器(Repeater)是一种功能强大的组件,用于创建重复…...

数字化医疗新篇章:构建智能医保支付购药系统

在迎接数字化医疗时代的挑战和机遇中,智能医保支付购药系统的建设显得尤为重要。本文将深入介绍如何通过先进的技术实现,构建一套智能、高效的医保支付购药系统,为全面建设健康中国贡献力量。 1. 引言 随着医疗科技的飞速发展,…...

11_12-Golang中的运算符

**Golang **中的运算符 主讲教师:(大地) 合作网站:www.itying.com** **(IT 营) 我的专栏:https://www.itying.com/category-79-b0.html 1、Golang 内置的运算符 算术运算符关系运算符逻辑运…...

k8s-ingress特性 9

TLS加密 创建证书 测试访问 auth认证 创建认证文件 rewrite重定向 进入域名时,会自动重定向到hostname.html 示例: 测试 版本的升级迭代,之前利用控制器进行滚动更新,在升级过程中无法做到快速回滚 更加平滑的升级&#xff1…...

【redis】redis系统实现发布订阅的标准模板

目录 简介参数配置代码模板 简介 Redis发布订阅功能是Redis的一种消息传递模式,允许多个客户端之间通过消息通道进行实时的消息传递。在发布订阅模式下,消息的发送者被称为发布者(publisher),而接收消息的客户端被称为…...

Python 时间日期处理库函数

标准库 datetime >>> import datetime >>> date datetime.date(2023, 12, 20) >>> print(date) 2023-12-20 >>> date datetime.datetime(2023, 12, 20) >>> print(date) 2023-12-20 00:00:00 >>> print(date.strfti…...

第二十二章 : Spring Boot 集成定时任务(一)

第二十二章 : Spring Boot 集成定时任务(一) 前言 本章知识点: 介绍使用Spring Boot内置的Scheduled注解来实现定时任务-单线程和多线程;以及介绍Quartz定时任务调度框架:简单定时调度器(Simp…...

关于“Python”的核心知识点整理大全32

目录 12.6.4 调整飞船的速度 settings.py ship.py alien_invasion.py 12.6.5 限制飞船的活动范围 ship.py 12.6.6 重构 check_events() game_functions.py 12.7 简单回顾 12.7.1 alien_invasion.py 12.7.2 settings.py 12.7.3 game_functions.py 12.7.4 ship.py …...

长沙公司网站建设/方象科技的企业愿景

理解TextView三部曲(三):倔强的StrokeTextView(我无论如何都要展示出来!而且要美美的!) 上一篇我们让StrokeTextView支持padding描边,如果有同学没有看过或者对上一篇内容有遗忘的&…...

要点营销网站/seo优化常识

https://www.cnblogs.com/niuben/p/12558841.html...

改善网站建设/最新seo课程

介绍(2021-05-12)用*好的iOS鼾声分析软件来记录、测量和减少您的鼾声。医生强烈推荐!鼾声分析器利用声波分析来测量和记录鼾声,帮助您找出减少鼾声的有效方法。“这个应用是个意外的惊喜。我第一次感觉能够控制打鼾了。谢谢鼾声分析器!”“鼾…...

网站建设关键要素/优云优客百度推广效果怎么样

前言 HDFS是Hadoop的一部分。 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统。 HDFS是一个高度容错性的系统,适合部署在廉价的机器上。 HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 HDFS放宽了一部分…...

网站空间期限查询/友情链接qq群

文章目录一、配置数据源-mysql二、下载安装1.1 下载包安装(已验证)1.2 Github 上下载源码(未验证)1.3 docker安装(已验证)三、springCloud pom主要配置3.1 pom3.2 bootstrap.yaml部分配置3.3 nacos设置对应一、配置数据源-mysql a:配置数据库 /*Navicat Premium Data Transfe…...

烟台建网站公司哪家好/谷歌浏览器 安卓下载2023版

我有一个Manager类,该类将数据保存在SQL表中,并从SQL表中获取结果并测试这些数据.当我运行程序时,将显示一个获取ID和密码的框架,如果它们正确,则另一个框架将但是我不知道为什么它只是测试SQL表的最后一行?我的意思是如果我用除最后一行以外的其他ID和密码设置那些…...