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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Response.AddHeader「建议收藏」

    Response.AddHeader「建议收藏」Response.AddHeader

  • SQL Server 2016 列存储索引功能增强「建议收藏」

    SQL Server 2016 列存储索引功能增强「建议收藏」列存储索引(columnstoreindex)在SQLServer2012中已经引入,其带来性能提升的同时也有很多限制,比如对带有列存储索引的表进行INSERT,UPDATE和DELETE时,会遇到如下错误提示:由于这种限制,索引列存储索引并不太适合在OLTP中应用。不过,SQLServer2016对列存储索引做了很多改进,其中我觉得最大的变化是可更新的

  • pycharm注释快捷键无法注释html文本解决方法

    pycharm注释快捷键无法注释html文本解决方法解决pycharm注释快捷键无法注释html文本方法如图修改成值None以后,command+/快捷键,html注释的符号就是<!/–注释内容–>;为Jinja2的时候,注释符号就是{#注释内容#}。修改成None时,Html就没有办法使用Jinja2的快捷输入了…

  • SpringBoot整合Druid「建议收藏」

    SpringBoot整合Druid「建议收藏」SpringBoot整合DruidDruid简介配置数据源配置Druid数据源监控Druid数据源具有监控的功能,并提供了一个web界面方便用户查看,类似安装路由器时,人家也提供了一个默认的web页面。Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0、DBCP等DB池的优点,同时加入了日志监控。Druid可以很好的监控DB池连接和SQL的执行情

  • 数字图像处理的基本概念_数字图像处理有什么用

    数字图像处理的基本概念_数字图像处理有什么用数字图像基本概念与彩色图像,(可以用来应付期末考)

  • c语言list的使用方法,c语言list操作

    c语言list的使用方法,c语言list操作#includetypedefstructLnode{intdata;structLnode*next;}LND,*lnd;lndmalloclist(lndl){l=(lnd)malloc(sizeof(LND));returnl;}intinitlist(lndl,intn){l->data=n;l->next=NULL;lndp;for(…

发表回复

您的电子邮箱地址不会被公开。

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