您现在的位置是:网站首页>Python编程Python编程

儿童python教程240:Python fileinput模块:逐行读取多个文件

少儿编程网2019-12-04 22:14:07Python编程 人已围观 来源:少儿编程 -用户投稿

简介当程序使用上面函数创建了 FileInput 对象之后,即可通过 for 循环来遍历文件的每一行。此外,fileinput 还提供了很多全局函数来判断正在读取的文件信息,如表 1 所示。

fileinput 模块提供了 input 函数,可以把多个输入流合并在一起,该函数的语法格式如下:

fileinput.input(files="filename1, filename2, ...", inplace=False, backup='', bufsize=0, mode='r', openhook=None)K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
<a href=http://www.pxcodes.com/Python/ target=_blank class=infotextkey>python</a> fileinput模块:逐行读取多个文件K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

此函数会返回一个 FileInput 对象,其中,各个参数的含义如下:
  • files:多个文件的路径列表;
  • inplace:用于指定是否将标准输出的结果写回到文件,此参数默认值为 False;
  • backup:用于指定备份文件的扩展名;
  • bufsize:指定缓冲区的大小,默认为 0;
  • mode:打开文件的格式,默认为 r(只读格式);
  • openhook:控制文件的打开方式,例如编码格式等。
K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
当程序使用上面函数创建了 FileInput 对象之后,即可通过 for 循环来遍历文件的每一行。此外,fileinput 还提供了很多全局函数来判断正在读取的文件信息,如表 1 所示。K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
 
表 1 fileinput 模块常用函数
函数名 功能描述
fileinput.filename() 返回正在读取的文件的文件名。
fileinput.fileno() 返回当前文件的文件描述符(file descriptor),该文件描述符是一个整数。
fileinput.lineno() 返回当前读取的行号。
fileinput.filelineno() 返回当前读取的行在其文件中的行号。
fileinput.isfirstline() 返回当前读取的行在其文件中是否为第一行。
fileinput.isstdin() 返回最后一行是否从 sys.stdin 读取。程序可以使用“-”代表从 sys.stdin 读取。
fileinput.nextfile() 关闭当前文件,开始读取下一个文件。
fileinput.close() 关闭 FileInput 对象。

文件描述符是一个文件的代号,其值为一个整数。后续章节将会介绍关于文件描述符的操作。K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

通过上面的介绍不难发现,fileinput 也存在一个缺陷,即在创建 FileInput 对象时不能指定字符集,因此它所读取的文件的字符集必须与操作系统默认的字符集保持一致。当然,如果文本文件的内容是纯英文,则不存在字符集的问题。K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
假设,目前有 a.txt 和 b.txt 文件,它们位于同一目录,并各自包含如下内容:

#a.txt包含如下内容:K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
C语言中文网K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
http://www.pxcodes.comK9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
#b.txt包含如下内容:K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
Python基础教程K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
http://www.pxcodes.com/pythonK9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台

下面程序示范了使用 fileinput 模块来读取以上 2 个文件:

import fileinput

# 一次读取多个文件

for line in fileinput.input(files=('a.txt', 'b.txt')):

    # 输出文件名,当前行在当前文件中的行号

    print(fileinput.filename(), fileinput.filelineno(), line)

# 关闭文件流

fileinput.close()
上面程序使用 fileinput.input 直接合并了 a.txt 和 b.txt 两个文件,这样程序可以直接遍历读取这两个文件的内容。程序运行结果如下:

a.txt 1 C语言中文网K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
a.txt 2 http://www.pxcodes.comK9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
b.txt 1 Python基础教程K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
K9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台
b.txt 2 http://www.pxcodes.com/pythonK9h少儿编程网-Scratch_Python_教程_免费少儿编程学习平台


相关文章:

支持一下 ( )查看更多相似文章

儿童python教程240:Python fileinput模块:逐行读取多个文件

      匿名评论
    • 评论
    人参与,条评论
    儿童python教程240:Python fileinput模块:逐行读取多个文件

客服在线

服务时间

周一至周日 9:00-21:00