Python 标准库 fileinput与文件迭代器

yizhihongxing

Python 标准库 fileinput 与文件迭代器

Python 的 fileinput 模块提供了一种简单的方式来读取来自多个文件或输入流的任意数量的行。该模块维护在文件列表中的当前文件,并在文件之间进行切换。和 Python 的流一样,它的工作方式是将每个文件作为一个序列来处理。

1. fileinput 模块的基本用法

fileinput 模块的主要方法是 fileinput.input(files=None, inplace=False, backup='', openhook=None)

  • files 可以是包含文件名的列表或者直接使用字符串代表文件路径,如果省略参数 files,则默认从标准输入 stdin 读取,一读到文件结束符 EOF 迭代截止。
  • inplace 参数可以设置为 True,表示直接修改文件内容,而不是将输出打印到屏幕上。
  • backup 参数可以设置备份文件的扩展名(比如 ".bak"),即在修改文件时将原文件备份为原文件名加上备份的扩展名后的文件。省略时,不进行备份操作。
import fileinput

# 遍历单个文件
with open('test.txt', 'r') as f:
    for line in fileinput.input(f):
        print(line.strip())

# 遍历多个文件
for line in fileinput.input(['file1.txt', 'file2.txt']):
    print(line.strip())

2. fileinput 模块的高阶用法

  • fileinput.filename():返回当前正在处理的文件的名称(不包括路径),如果当前在处理标准输入,则返回 -
  • fileinput.lineno():返回当前正在处理的行数(基于1),如果当前在处理标准输入,则返回0。
  • fileinput.filelineno():返回当前正在处理的文件中的行号(基于1),如果当前在处理标准输入,则返回0。
import fileinput

# 遍历单个文件,输出每行的行号和内容
with open('test.txt', 'r') as f:
    for line in fileinput.input(f):
        print(f"{fileinput.lineno()}: {line.strip()}")

# 遍历多个文件,同时修改文件内容
with fileinput.FileInput(files=['file1.txt', 'file2.txt'], inplace=True, backup='.bak') as f:
    for line in f:
        print(line.replace('apple', 'orange'), end='')

在上面的示例中, inplace 参数设置为 True,表示在遍历多个文件时,将 'file1.txt' 和 'file2.txt' 中的所有字符串 'apple' 替换为 'orange',并在原文件中修改;同时备份原文件为 '.bak'。

通过以上两个示例,相信读者可以初步了解 fileinput 模块的用法,想要了解更多详情,请查阅 Python 官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 标准库 fileinput与文件迭代器 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 简单了解python代码优化小技巧

    简单了解Python代码优化小技巧 Python 是一门高级语言,其简单易学、代码清晰、易于阅读等特点使得其广泛应用于数据处理、科学计算、Web开发等众多领域。Python 代码优化是提高代码效率、减少资源浪费的必经阶段。本文将介绍一些简单的 Python 代码优化小技巧。 使用局部变量 在 Python 中,局部变量的访问速度比全局变量快很多。所以当需要多…

    python 2023年5月31日
    00
  • Python:用包含子字符串的单词拆分字符串

    【问题标题】:Python: Split a string by a word which contains a substringPython:用包含子字符串的单词拆分字符串 【发布时间】:2023-04-03 13:27:08 【问题描述】: 我有一个字符串text = “Fix me a meeting in 2 days”。我有一些单词列表meeti…

    Python开发 2023年4月8日
    00
  • 详解Node.js和Python的区别

    Node.js和Python都是广泛应用于Web开发领域的编程语言,两者有一些异同点。下面我们来详细讲解Node.js和Python的区别。 1. 语言特性 Node.js Node.js是一种基于事件驱动、非阻塞I/O模型的服务器端JavaScript运行环境。它使用V8 JavaScript引擎,提供高效的性能和轻量级的编程模型,在处理并发I/O操作时表…

    python-answer 2023年3月25日
    00
  • Python 如何对文件目录操作

    Python 中的标准库 os 包含了许多文件和目录管理的操作函数,可以让我们轻松地操作文件和文件夹。 1. 获取文件目录信息 os.getcwd():获取当前目录的路径。 import os current_path = os.getcwd() print(current_path) os.listdir(path=”.”):返回指定的文件夹包含的文件或文…

    python 2023年5月18日
    00
  • 修改xml文件再也不用重启项目mybatis-xmlreload方法

    很高兴为您讲解“修改xml文件再也不用重启项目mybatis-xmlreload方法”的完整攻略。 背景 在使用MyBatis进行开发时,我们常常需要修改mapper.xml文件。然而每次修改完毕后,为了让这些修改生效,我们都需要重启应用程序。 这对于频繁修改mapper.xml文件的场景来说,无疑是非常麻烦的。本文将介绍如何使用mybatis-xmlrel…

    python 2023年6月3日
    00
  • python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法

    要实现“python opencv 读取图片 返回图片某像素点的b,g,r值”的功能,可以按照以下步骤进行操作: 步骤一:安装OpenCV库 在命令行中使用以下命令安装OpenCV库: pip install opencv-python 步骤二:读取图片 在Python代码中使用以下语句读取图片: import cv2 # 读取图片 img = cv2.im…

    python 2023年5月18日
    00
  • Python爬虫之urllib基础用法教程

    关于Python爬虫之urllib基础用法教程的完整攻略,下面我进行详细讲解。 一、urllib库介绍 urllib是Python中用于操作URL的标准库之一,它包含了多个模块,分别用于实现不同的功能,以下是urllib库中几个常用的模块: urllib.request:用于向URL发起请求并接受响应。 urllib.parse:用于URL的解析和拼接。 u…

    python 2023年5月31日
    00
  • python使用psutil模块获取系统状态

    下面我会详细讲解如何使用Python的psutil模块获取系统状态信息。 什么是psutil模块 psutil模块是Python系统信息工具包,它提供了获取系统 CPU、内存、磁盘、网络等方面的信息的方法。使用psutil模块,我们可以轻松获取我们想要的系统状态信息。 psutil模块安装 首先,我们需要安装psutil模块。在命令行中使用pip命令即可安装…

    python 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部