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

Python 从入门到实战28(文件的读操作)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将学习一下文件的读的相关操作知识。

1、读取文件read()方法

在python中通过打开文件后就可以读取文件内容了。

读取指定字符方法方法: file.read(size)

file----为打开的文件对象

size---为可选参数,用于指定要读取的字符个数,若是省略则一次性读取所有内容。

注意:调用read()方法读取文件内容的前提是,打开文件时,打开模式r或者r+。

举例说明:读取文件"test_data.txt"

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data = test_data_file.read()  #读取文件中全部内容
        print(test_data)

输出参考:

xiaomi,123456

xiaohua,135790

xiaohui,246810

另外,举例读取一部分字符:

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data = test_data_file.read(13)  #读取前13个字符
        print(test_data)

输出结果:

xiaomi,123456

2、seek()指定光标位置

上面我们使用read()方法读取文件,读取文件都是从开头开始读取的。如果我们想从某一位置开始读取要怎么实现呢?可以使用seek()方法将文件的指针移动到新的位置处。然后在使用read(size)方法读取文件。

seek()语法: file.seek(offset, [, whence])

参数说明:offset----表示要移动的字节数,可以为正数、负数或零。

whence(可选)----表示移动文件指针的参考位置,默认值为0。有三种取值:0:表示从文件开头开始计算偏移量。1:表示从当前位置开始计算偏移量。2:表示从文件末尾开始计算偏移量。

举例说明:

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data_file.seek(7)    #索引也是从0开始,7指第8个字符开始
        test_data = test_data_file.read(6)  #从第8个字符读取6个字符,即读取密码
        print(test_data)

参考下面的文档内容,

输出结果:123456

举例读取最后一组数据:

                                                                                                                                               

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data_file.seek(-12,2)    #移动到文件末尾向前第12位置
        test_data = test_data_file.read(12)  #读取12个字符,即读取最后一组数据
        print(test_data)

执行报错了,因为以r模式打开只支持从文件头开始计算相对位置。以rb方式才支持从文件末尾计算。

修改后查看:

def main():
    with open("test_data.txt", "rb") as test_data_file:
        test_data_file.seek(-14,2)    #移动到文件末尾向前第14位置
        test_data = test_data_file.read(14)  #读取14个字符,即读取最后一组数据
        print(test_data)

输出参考:正确输出最后一行数据,

3、readline()读取一行

在使用read()方法读取文件时,如果文件很大,一次性读取全部内容到内存,容易造成内存不足。如何解决这个问题呢?可以通过读取一行数据。

使用语法:file.readline() 

同样需要注意,使用此方法也要打开模式是r(只读)或者r+(读写)。

举例说明,如我们读取上面test_data.txt 按行输出,并加上序号。

参考代码:

def main():
    with open("test_data.txt", "r+") as test_data_file: #打开文件
        sequence_no = 0
        while True:
            sequence_no = sequence_no+1   #作为序号输出
            line = test_data_file.readline()  #读取一行数据
            if line == "":             #读取到文件末尾退出循环,即退出读取文件
                break
            print(sequence_no,"\t"+ line)  #打印序号和一行内容

输出结果:

1     xiaomi,123456

2     xiaohua,135790

3     xiaohui,246810

4、读取全部行readlines()

使用readlines()可以读取全部文件内容,此方法返回值是一个字符串列表。

使用语法:file.readlines() 

同样需要注意,使用此方法也要打开模式是r(只读)或者r+(读写)。

举例说明,如我们读取上面test_data.txt

def main():
    with open("test_data.txt", "r+") as test_data_file:  # 打开文件
        test_data = test_data_file.readlines() #读取全部内容
        print(test_data)

输出结果:

['xiaomi,123456\n', 'xiaohua,135790\n', 'xiaohui,246810']

若是想一行行的输出,也可以循环打印:

def main():
    with open("test_data.txt", "r+") as test_data_file:  # 打开文件
        test_data = test_data_file.readlines() #读取全部内容
        for line in test_data:
            print(line)

输出结果参考:

5、读取csv文件

数据为my_data,在CSV文件中存储的。

内容如下:

读取csv方法:导入csv模块>reader()读取>输出信息查看

#coding = utf-8

import  csv  #导入csv
def main():
    user_file = csv.reader(open('my_data.csv', 'r'))  # 打开文档并读取
    for line in user_file:  #按行输出
        print(line)

执行后输出结果参考:

['zhangsan', '123456']

['wangwu', '257890']

['liuliu', '358147']

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

相关文章:

Python 从入门到实战28(文件的读操作)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将…...

[leetcode刷题]面试经典150题之7同构字符串(简单)

这个题虽然是简单题,但是看了半天还是没啥好思路,最后看了解题学到了不少知识点 1.index() 函数查找序列中首次出现的元素索引 2.zip函数:用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

💌 所属专栏:【单片机开发软件技巧】 😀 作  者: 于晓超 🚀 个人简介:嵌入式工程师,专注嵌入式领域基础和实战分享 ,欢迎咨询! 💖 欢迎大家&#xff1…...

【rust】 基于rust编写wasm,实现markdown转换为html文本

文章目录 背景转换预览核心代码前置依赖rustup换源cargo换源中科大 wasm-pack安装 背景 尝试用rust编写一款markdown转html的插件,通过wasm给html使用,不得不说体积挺小,约200K, 比go的wasm起步2MB看着舒服点。 不过go的配置和换…...

Java中的反向代理与负载均衡:Nginx与Java服务的集成

Java中的反向代理与负载均衡:Nginx与Java服务的集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一下Java应用中的反向代理与负载均衡,以及如何通过Ngin…...

高级java每日一道面试题-2024年9月26日-运维篇[分布式篇]-如何保证每个服务器的时间都是同步的?

如果有遗漏,评论区告诉我进行补充 面试官: 如何保证每个服务器的时间都是同步的? 我回答: 确保服务器之间的时间同步对于维护分布式系统的一致性、日志记录的准确性以及安全认证的有效性非常重要。以下是几种常见的方法来保证服务器时间同步: 1. 使用NTP&#…...

探索MemGPT:AI界的新宠儿

文章目录 探索MemGPT:AI界的新宠儿1. 背景介绍2. MemGPT是什么?3. 如何安装MemGPT?4. 简单的库函数使用方法5. 场景应用场景一:创建持久聊天机器人场景二:文档分析场景三:多会话聊天互动 6. 常见Bug及解决方…...

处理RabbitMQ连接和认证问题

在使用RabbitMQ进行消息队列管理时,我们可能会遇到各种连接和认证问题。本文将介绍如何诊断和解决这些问题,并通过使用RabbitMQ的管理端进行登录验证来确保配置正确。 1. 问题概述 在最近的一次部署中,我们遇到了两个主要问题: …...

FFmpeg中结构释放小函数

用于FFmpeg一些结构内存释放问题 #pragma once #include <iostream>extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavutil/avutil.h" #include "libavutil/frame.h"…...

C语言中的一些小知识(三)

一、你了解printf()吗&#xff1f; 你知道下面代码的输出结果吗&#xff1f; int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数&#xff0c;它允许你将数据以特定的格式输出到标准输出设备&#xff08;通常是屏幕&#xff09;。p…...

编译win2k3中tools目录下i386mk.inc文件的作用

编译win2k3中tools目录下i386mk.inc文件的作用 在Windows Driver Kit&#xff08;WDK&#xff09;的根安装目录下&#xff0c;这些文件存储在bin子目录中。 在这些文件中&#xff0c;有特定于该目标的优化规则或汇编指令。可能还需要额外的链接标志、资源编译器标志或C预处理器…...

IPSec隧道协议学习(一)

前情回顾 前面介绍的GRE隧道协议&#xff0c;可以字LAN之间通过Internet建立隧道&#xff0c;实现网络间资源共享&#xff0c;但是GRE隧道协议不能实现加密功能&#xff0c;传输的数据不受加密保护&#xff0c;为了实现在隧道间传输数据包收到加密保护&#xff0c;需要使用IPS…...

计网作业3

1.交换机是依据 MAC地址 来转发数据包的 2.数据链路层 负责将数据封装成帧&#xff0c;在相邻节点间进行传输 数据链路层负责以下任务&#xff1a; 封装数据 物理地址寻址&#xff1a;使用MAC地址进行寻址&#xff0c;确保数据能够在局域网中正确传输到目标节点 介质访问控…...

什么是注入攻击???

在 Java 中&#xff0c;注入攻击是一种利用程序中的安全漏洞来执行恶意代码或获取未经授权的数据的攻击方式。 相关面试题&#xff1a; #{} 和 ${} 的区别是什么&#xff1f; ${}是 Properties 文件中的变量占位符&#xff0c;它可以用于标签属性值和 sql 内部&#xff0c;属…...

牛客小白月赛101(A~E)

文章目录 写在前面A tb的区间问题思路code B tb的字符串问题思路code C tb的路径问题思路code D tb的平方问题思路code E tb的数数问题思路code 牛客小白月赛101 写在前面 最近几天没怎么刷题&#xff0c;昨天晚上打的这场牛客月赛打的很烂&#xff0c;隔几天不刷题感觉自己的…...

MFC设置特定控件字体大小和背景颜色

MFC设置特定控件字体大小和背景颜色 初始化函数里 m_editFont.CreatePointFont(580 , _T("宋体"));m_ctrlEdit.SetFont(&m_editFont);重写消息 HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC,…...

专题八_链表_算法专题详细总结

目录 链表 1.常用技巧 1&#xff09;画图&#xff01;&#xff01;&#xff01; -> 直观 形象 便于我们理解 2&#xff09;引入虚拟“头”节点 1.便于处理边界条件 2.方便我们对链表进行操作 3.不要吝啬空间&#xff0c;大胆定义变量 4.快慢双指针 1.判断链表是否…...

Vue3使用vue-quill富文本编辑器实现图片大小调整

安装uill-image-resize npm install quill-image-resize --save在项目中导入并注册插件 import { QuillEditor, Quill } from vueup/vue-quill; import ImageUploader from quill-image-uploader; import ImageResize from quill-image-resize; //导入插件 import vueup/vue-…...

感知笔记1:ROS 视觉- 跟随红球

- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪&#xff08;blob 跟…...

JAVA多线程机制

JAVA多线程的实现 JAVA有两种方法创建线程 &#xff08;1&#xff09;继承Thread类 &#xff08;2&#xff09;实现Runnable接口 这两种方法都要用到Thread类以及相关方法 Thread类 是一个具体的类&#xff0c;不是抽象类&#xff0c;封装了线程的行为 利用Thread类创建一个…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...