码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python 标准库之 fileinput 和 文件迭代器


    1. 使用 fileinput 进行迭代

    fileinput 模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的 input() 函数有点类似文件 readlines 函数,但区别明显:

    • readlines 是一次性读取文件中的全部内容,如果文件较大的话,会占用大量内存;
    • input 返回的则是一个迭代对象,结合 for 循环使用,典型用法如下:
    import fileinput
    
    for line in fileinput.input(filename):
        process(line)
    
    • 1
    • 2
    • 3
    • 4

    实例

    import fileinput
    
    for line in fileinput.input("D:/Users/data.txt"):
        print(line)
    
    • 1
    • 2
    • 3
    • 4

    注意,input 函数有多个参数:分别设置读取文件路径、读写模式、编码方式、缓冲区大小、备份文件扩展名等。

    此外,fileinput 模块还有很多常用的函数,这里介绍几个最常用的。

    函数名 说明

    • fileinput.input() 返回能够用于 for 循环遍历的对象
    • fileinput.filename() 返回当前文件的名称
    • fileinput.lineno() 返回当前已经读取的行的数量(或者序号)
    • fileinput.filelineno() 回当前读取的行的行号
    • fileinput.isfirstline() 检查当前行是否是文件的第一行
    • fileinput.isstdin() 判断最后一行是否从 stdin 中读取
    • fileinput.close() 关闭队列

    2. 文件迭代器

    #打开文件,一次写入多行内容
    f = open("D:/Users/data.txt",'w')
    content = ['append information1\n','append information2']
    f.writelines(content)
    f.close()
    
    #打开文件,通过文件迭代器遍历文件
    f = open("D:/Users/data.txt",'r')
    for line in f:
        print('content:',line)
    # 或者 将读取内容转化为字符串列表 效果类似 readlines
    lines = list(f)
    print(lines)
    #关闭文件
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    执行结果(省略空行):

    content: append information1
    content: append information2
    
    • 1
    • 2

    3. 字典的 setdefault 方法使用举例

    如果仅当字典中不存在某个键值对时,才插入到字典中;如果存在,不必插入(也就不会修改键值对)。

    这种场景,使用字典自带方法 setdefault :

    In [35]: d = {'a':1,'b':2}
    
    In [36]: r = d.setdefault('c',3) # r: 3
    
    In [37]: r
    Out[37]: 3
    
    In [38]: d
    Out[38]: {'a': 1, 'b': 2, 'c': 3}
    
    
    In [39]: r = d.setdefault('c',33) # r:3,已经存在'c':3的键值对,所以setdefault时d无改变
    
    In [40]: r
    Out[40]: 3
    
    In [41]: d
    Out[41]: {'a': 1, 'b': 2, 'c': 3}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    Java,controller类里面,不要用 String (或int)定义变量
    02_常见网络层协议的头结构
    供应链管理系统(Java+SSH+MyEclipse+MySQL)
    React+TS前台项目实战(二十九)-- 首页构建之性能优化实现首页Echarts模块数据渲染
    获取QTextedit文本宽度
    面渣逆袭:MySQL六十六问,两万字+五十图详解
    Redis 中 redis-benchmark 详解及参数介绍
    云端日历同步大师:iCloud让工作与生活井井有条
    uniapp 学习笔记十二 自动转存商品数据逻辑
    Vue——计算属性(计算属性简介、计算属性和方法的区别:(面试)、关于计算属性 函数什么情况下调用、案例)
  • 原文地址:https://blog.csdn.net/wohu1104/article/details/125055526
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号