Python 逐行读取txt 文件并生成列表

前言开始1.载入文件2.读取数据流3.数据处理4.关闭文件前言我们在编写一些自动化脚本的时候,为了方便,经常需要以txt文件作为数据输入,今天就跟大家讨论一下如何对txt文件进行读取并生成对应的列表等程序可操作的数据载体。开始1.载入文件这步就大家比较熟悉,文件操作中最基本的了。因为我们只需要读取文件,并不需要写入文件,所以在这里指定mode=”r”为只读模式(默认)。f=open(“C:/foo.txt”,”r”,encoding=’utf-8′)此时就有了这.

大家好,又见面了,我是你们的朋友全栈君。


前言

我们在编写一些自动化脚本的时候,为了方便,经常需要以txt 文件作为数据输入,今天就跟大家讨论一下如何对txt 文件进行读取并生成对应的列表等程序可操作的数据载体
在这里插入图片描述

开始

1. 载入文件

这步就大家比较熟悉,文件操作中最基本的了。

因为我们只需要读取文件,并不需要写入文件,所以在这里指定mode="r" 为只读模式(默认)。

f = open("C:/foo.txt", "r",encoding='utf-8')

此时就有了这个txt 文件的数据输入流了。

2. 读取数据流

读取数据的方法主要有三个,分别是read()readline()readlines()

方法 作用
read() 从文件读取指定的字节数,如果未给定或为负则读取所有。
readline() 读取整行,包括 “\n” 字符。
readlines() 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

接下来简单展示一下这三种方法的区别:
这是foo.txt 中的内容

("祖安", 1000)
("诺克萨斯", 900)
("艾欧尼亚", 880)
("暗影岛", 750)
("征服之海", 620)
("黑色玫瑰", 600)
("德玛西亚", 500)
("裁决之地", 440)
("圣安地列斯", 400)
("自由城", 350)
("供电所", 300)
("影流", 200)
("荆棘坎坷", 180)
("永不言弃", 100)
  1. read()
    txt 数据格式一致,返回str 类型数据
    在这里插入图片描述
  2. readline()
    只读取一行(包括换行),返回str 类型数据
    在这里插入图片描述
  3. readlines()
    全部读取,返回list 类型数据
    在这里插入图片描述

3. 数据处理

根据上一步,我们可以得到多种形式的数据类型,从而根据我们的需求进行多种处理。

大家可以看到,我的foo.txt 中的数据是满足元组形式的,那我就试着将foo.txt 文件中的字符串类型数据转变成元组吧:

line = f.readline() # 读取一行
tu = eval(line) # 转为元组形式
print(tu)
print(type(tu))

输出:
在这里插入图片描述
若需要全部数据都逐行转变为元组,然后整体串成一个列表:

txt_tables = []
f = open("C:/foo.txt", "r",encoding='utf-8')
line = f.readline() # 读取第一行
while line:
    txt_data = eval(line) # 可将字符串变为元组
    txt_tables.append(txt_data) # 列表增加
    line = f.readline() # 读取下一行
print(txt_tables)

之所以while 循环中的f.readline() 能够不断读取下一行,是因为当我们每次执行完一次该语句之后,文件输入流的指针都会移动到下一行的起始位,所以每次再次执行,都是从下一行的第一个字符开始读取。

输出:
在这里插入图片描述

4. 关闭文件

是的,不要忘了关闭文件流:

f.close()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126834.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月8日 下午5:40
下一篇 2022年4月8日 下午5:40


相关推荐

  • c# AD域 权限管理

    c# AD域 权限管理我现在开始第一步,获取AD域用户所在的组,因为我想把菜单和界面按钮的功能由角色组来控制,用户加入角色组就可以获得相应的权限.这是我的思路.第一如何关联AD域并获取当前登录域的用户所在的角色组 ADUserMessage()代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.DirectorySer

    2022年5月16日
    123
  • java条码识别技术_Java 生成、识别条形码

    java条码识别技术_Java 生成、识别条形码条形码是由一定的字符 数字及符号组成 用以表达一组信息的图形标识符 它可以标出物品的商品名称 生产日期 图书分类号 邮件起止地点等 因而在商品流通 图书管理 邮政管理等许多领域得以广泛的应用 本文将通过使用 Java 程序来详细介绍如何生成和识别一些常见的一维和二维条形码 Jar 文件获取及导入 方法 1 通过官网下载获取 jar 包 解压后将 lib 文件夹下的 Spire Barcode jar 文件导入 Java

    2026年3月16日
    3
  • USBPD充电协议,快充协议IC,PD3.0芯片

    USBPD充电协议,快充协议IC,PD3.0芯片USBPD3 0 PD 快充协议 快充协议芯片 PD3 0 协议适配器芯片 支持 USBType CPD 标准快充协议芯片 100W 快充 PD3 0 PD 快充协议芯片 USBPD PD 快充充电协议 通过 MCU 和丰富的 DP DM 接口 可实现主流的快充协议 PD 充电协议 IC PD 充电协议芯片 PD 快充协议 IC PD 快充协议芯片 PD 快充方案深圳市微电半导体有限公司秦丽它集成了 USBType C 和 PDPHY 充当电源角色支持华为的快速充电协议 FCP 超

    2026年3月19日
    2
  • ChatGPT 如何升级?ChatGPT Plus-GPT4 升级详细指南

    ChatGPT 如何升级?ChatGPT Plus-GPT4 升级详细指南

    2026年3月16日
    2
  • 数据库mysql的执行顺序(sql语句大全实例教程)

    今天遇到一个问题就是mysql中insertinto和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序:sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。一、sql执行顺序(1)from(3)join(2)on(4)where…

    2022年4月13日
    95
  • 蓝色光标与腾讯元宝合作的潜在收益,核心体现在收入与毛利双升、客户与场景扩容、技术

    蓝色光标与腾讯元宝合作的潜在收益,核心体现在收入与毛利双升、客户与场景扩容、技术

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号