一、介绍

fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作,我们常用的open函数是对一个文件进行读写操作。

fileinput模块的input()函数比open函数更高效和好用,体现在:

  1. input()函数生成一个迭代器,保证了在遇到大文件的读取时不会占用太大的内存。
  2. 用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,还能获取每一行的行号等等,非常方便。

二、fileinput读取文件函数input的使用格式

fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)

files:         # 文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]
inplace: # 是否将标准输出的结果写回文件,默认不取代
backup: # 备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。
bufsize: # 缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可
mode:      # 读写模式,默认为只读
openhook:    # 该钩子用于控制打开的所有文件,比如说编码方式等;

三、fileinput中的常用函数

函数 描述
input([files[, inplace[, backup]]])  帮助迭代多个输入流中的行
filename()  返回当前文件的名称
lineno()   返回(累计的)当前行号
filelineno() 返回在当前文件中的行号
isfirstline() 检查当前行是否是文件中的第一行
isstdin() 检查最后一行是否来自sys.stdin
nextfile() 关闭当前文件并移到下一个文件
close()   关闭序列

fileinput.input是最重要的函数,它返回一个迭代器对象,如果要处理多个文件,可以向这个函数提供一个或多个文件名。

还可将参数inplace设置为True(inplace=True),对于你访问的每一行,都需打印出替代内容,这些内容将被写回到当前输入文件中,此时可选参数backup用于给从原始文件创建的备份文件指定扩展名。

四、示例

1、读取多个文件

# a.txt文件的内容
"""




""" # b.txt文件的内容
"""




""" # 读取一个文件
for line in fileinput.input("a.txt"):
print(line) # 读取多个文件
for line in fileinput.input(["a.txt", "b.txt"]):
print(line)

2、修改文件并备份原文件

# -*_ coding:utf-8 -*-
import fileinput for line in fileinput.input("a.txt", backup=".bak", inplace=True):
line = line.replace("我", "小明")
print(line) # 结果
当前文件夹会生成a.txt.bak文件,内容是之前的内容,
而a.txt文件已经被修改了,把"我"变成了"小明"

3、输出当前行号和行内容

# -*_ coding:utf-8 -*-
import fileinput for line in fileinput.input("a.txt"):
lineno = fileinput.filelineno()
print lineno, line # 结果
1 我
2 是
3 好、
4 人

4、输出文件名

# -*_ coding:utf-8 -*-
import fileinput for line in fileinput.input("a.txt"):
# 在第一行前面先输出文件名
if fileinput.isfirstline():
print fileinput.filename()
print line # 结果
a.txt


好、

其他函数,都是类似的使用方法,这里就不全部介绍了。

python文件处理之fileinput的更多相关文章

  1. python文件和文件夹訪问File and Directory Access

    http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. (原创)Python文件与文件系统系列(1)—— file 对象

    本系列将从四个部分简单介绍Python对文件系统的操作与支持: 1. Python内置的 file 对象 2. Python的os模块对文件.文件系统操作的支持 3. Python的os.path模块 ...

  4. python文件处理复习

    1.创建文件 >>> file('test.txt','w')   -->在当前路径下创建文件 test.txt是文件名 w是打开文件的方式,r是读,w是写,a是追加,如果当前 ...

  5. [ Python入门教程 ] Python文件基本操作

    本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...

  6. 第十二章 Python文件操作【转】

    12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...

  7. python文件的读写总结

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  8. Linux下Python 文件内容替换脚本

    Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...

  9. 【Python文件处理】递归批处理文件夹子目录内所有txt数据

    因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...

随机推荐

  1. codeforces 858A

    A. k-rounding time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  2. Linux 学习笔记分享: Linux 用户组的权限: drwx------ 700权限(d 目录 ,r=4,w=2,x=1:rwx=7;---=0;---=0)

    Linux 用户组的权限: drwx------ 700权限(d 目录 ,r=4,w=2,x=1:rwx=7;---=0;---=0) 1 1 Linux 用户组的权限: drwx------ 700 ...

  3. 微信小程序-生命周期图解

    微信小程序-生命周期图解 小程序生命周期 App 生命周期 https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.htm ...

  4. styled-components all in one

    styled-components all in one CSS in JS https://www.styled-components.com/ https://github.com/styled- ...

  5. 谷歌地球服务器"失联"的替代方案

    2020年11月下旬,谷歌地球开始无法连接.作为谷歌地球的替代方案,推荐使用国产软件"图新地球LSV".网址 http://www.tuxingis.com 下载"图新地 ...

  6. react虚拟dom

  7. 使用python编写量子线路打印的简单项目,并使用Sphinx自动化生成API文档

    技术背景 该文章一方面从量子线路的打印着手,介绍了一个简单的python量子线路工程.同时基于这个简单的小工程,我们顺带的介绍了python的API文档自动化生成工具Sphinx的基本使用方法. 量子 ...

  8. 自己写的一个抢票加速的Python小程序源码分享-----纯属娱乐

    最近这段时间频频看到微信群里发什么 抢票加速,智行.携程.飞猪.美团,对于我这能坐客车就不坐火车的人来说,无所谓靠谱不靠谱 突发奇想的整理了下整个抢票加速的逻辑,写了这个小程序,代码很low,拒绝批评 ...

  9. VMware安装centos.6.8无法访问主机的问题

    安装步骤 点击下一步,如下图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图 接上图: 接上图: 接上图: 接上图: 接上图: 接上图: 点击 完成: 启动虚拟机进行安装: 发现报 ...

  10. 死磕以太坊源码分析之EVM如何调用ABI编码的外部方法

    死磕以太坊源码分析之EVM如何调用ABI编码的外部方法 配合以下代码进行阅读:https://github.com/blockchainGuide/ 写文不易,给个小关注,有什么问题可以指出,便于大家 ...