,,Python实现读取文件的方法总结

,,Python实现读取文件的方法总结

本文主要介绍Python中读取文件的几种方法。文章中的样例代码解释的很详细,感兴趣的朋友可以看看。

目录

前言1、方法介绍2、默认读取3、处理a文件4、处理批处理文件5、读取和备份6、重定向和替换7、高级总结。

序言

兄弟们好,今天我们来学习一下fileinput。

说到fileinput,可能90%的码农说他们从来没用过,甚至没听说过。

这并不奇怪,因为在python中,既然open可以接管世界,为什么还需要fileinput呢?

但是,今天我还是要介绍fileinput这个方法,因为它太幼稚了。

不仅仅是熏香。好香啊!

接下来跟着我,fileinput,对,就是这个手感。

1、方法介绍

基本用法

我们先来看看fileinput的基本功能:

Fileinput.filename():返回当前读取的文件名。

—在读取第一行之前返回None。

Fileinput.fileno():返回当前文件的“文件描述符”,用整数表示。

—当文件未打开时(在第一行和文件之间),返回-1。

Fileinput.lineno():返回已读取的累积行号。

—在读取第一行之前返回0。读取最后一个文件的最后一行后,返回该行的行号。

Fileinput.filelineno():返回当前文件中的行号。

—在读取第一行之前返回0。

—读取最后一个文件的最后一行后,返回该行在该文件中的行号。

进阶用法

Fileinput.isfirstline():如果刚刚读取的行是它所在文件的第一行,则返回True,否则返回False。

Fileinput.isstdin():如果最后读取的行来自sys.stdin,则返回True,否则返回False。

Fileinput.nextfile():关闭当前文件,以便下一次迭代从下一个文件(如果存在)读取第一行;未从该文件中读取的行将不会计入累积行数。在读取下一个文件的第一行之前,文件名不会改变。

—在读取第一行之前,此功能不会生效;它不能用于跳过第一个文件。

—读取最后一个文件的最后一行后,该功能将不再有效。

Fileinput.close():关闭序列。

2、 默认读取

代码示例

导入文件输入

'当Python脚本没有传入任何参数时,fileinput默认将stdin作为输入源'

对于fileinput.input()中的行:

打印(f“{ line }”)

运行结果

你输入的东西,程序会再次读取并输出。

俗称:复读机

3、处理一个文件

代码示例

导入文件输入

'文件只需输入打开文件的名称'

使用file input . input(files=(' output . txt ',))作为文件:

对于文件中的行:

print(f ' { file input . filename()} Line { file input . lineno()}:{ Line } ',end=' ')

运行结果

解析:

Fileinput有且只有这两种读取模式:‘R’,‘Rb’;

默认情况下,Fileinput.input()以mode=' r '读取文件。如果你的文件是二进制的,你可以使用mode=' rb '。

4、处理批量文件

多文件序号连续排序

调用方法

fileinput.lineno()方法

代码示例

导入文件输入

'文件只需输入打开文件的名称'

使用file input . input(files=(' output . txt ',' input.txt '))作为文件:

对于文件中的行:

#fileinput.lineno()将两个文件整合成一个文件对象文件,需要排序输出。

print(f ' { file input . filename()} Line { file input . lineno()}:{ Line } ',end=' ')

# fileinput.filelineno()两个文件分别读取,需要分别排序。

print(f ' { file input . filename()} Line { file input . file lineno()}:{ Line } ',end=' ')

运行结果

多文件序号单独排序

调用方法

fileinput.filelineno()方法

代码示例

导入文件输入

'文件只需输入打开文件的名称'

使用file input . input(files=(' test1 . txt ',' test2.txt '))作为文件:

对于文件中的行:

# fileinput.filelineno()两个文件分别读取,需要分别排序。

print(f ' { file input . filename()} Line { file input . file lineno()}:{ Line } ',end=' ')

运行结果

与glob配合用法

在颜值的时代,上面的输出样式,已经无法满足我们的需要了,于是乎,我们就想到了全球。

代码示例

导入文件输入

导入全球

#全球匹配大调音阶的第七音开头的文本文件(文本文件)文件

用于文件输入。投入中的行全球的,全球的.txt ')):

if fileinput.isfirstline():

#输出读取文件

打印('='*10,f '读取文件{fileinput.filename()} ','='*10)

#fileinput.filelineno()方法读取

打印(字符串(文件输入。文件行号())“:”行。upper(),end=“”)

运行结果

就这颜值,哪个小姐姐能不喜欢呢。

5、读取与备份

调用方法

文件输入。输入的支持参数,可以指定备份的后缀名,比如100 . bak

代码示例

导入文件输入

#触发支持的动作,源文件内容被修改,对源文件进行支持

带文件输入。input(files=' test1。txt ',),backup=' .bak ',inplace=1)作为文件:

对于文件中的行:

print(line.rstrip().替换(' 111111 ',' 222222 '))

print(f'{fileinput.filename()}第{fileinput.lineno()}行:{line} ',end=' ')

运行结果

6、重定向替换

解析

上面的例子,用到了原地参数,表示是否将标准输出的结果写回文件,默认不取代。

代码示例:

导入文件输入

#触发支持的动作,源文件内容被修改,对源文件进行支持

使用文件输入。输入(files=(' test 2。txt ',),inplace=True)作为文件:

打印('[信息]任务已开始.')

对于文件中的行:

print(f'{fileinput.filename()}第{fileinput.lineno()}行:{line} ',end=' ')

打印('[信息]任务已关闭.')

运行结果

通过运行结果,可以看到:

在为循环体内的打印内容会写回到原文件中了。

而在为循环体外的打印则没有变化。

7、进阶

openhook含义解析

在文件输入。输入()中有一个开放式挂钩的参数,它支持用户传入自定义的对象读取方法;

如果没有传入任何勾子,文件输入默认使用的是打开函数;

方法介绍

文件输入内置了两种勾子

1、fileinput.hook_compressed(文件名,模式)

使用gzip和bz2模块透明地打开gzip和bzip2压缩的文件(通过扩展名。广州和。bz2 '来识别);

如果文件扩展名不是。广州或。bz2 ',文件会以正常方式打开(即使用打开()并且不带任何解压操作);

使用示例:fi=文件输入文件输入(开钩=文件输入。钩子_压缩)

2、文件输入.钩子编码(编码,错误=无)

返回一个通过打开()打开每个文件的钩子,使用给定的编码和错误来读取文件。

使用示例:fi=文件输入文件输入(开钩=文件输入。hook _ encoded(" utf-8 "," surrogateescape "))

示例实战

假如我想要使用文件输入来读取网络上的文件,思路:

先使用要求下载文件到本地

再使用打开去读取它;

def online_open(网址,模式):

导入请求

r=requests.get(url)

filename=url.split('/')[-1]

用打开(文件名,' w ')作为f1:

f1。写(r .内容。解码(' utf-8 '))

f2=打开(文件名,' r ')

返回第二子代

直接将这个函数传给开放式挂钩即可:

# -*-编码:utf-8 -*-

# @时间:2022-07-23

# @作者:卡尔_DJ

导入文件输入

file _ URL=' https://www。csdn。网络/机器人。'文本'

使用文件输入。input(files=(file _ URL,),openhook=online_open)作为文件:

对于文件中的行:

打印(行,结束=' ')

代码整合:

# -*-编码:utf-8 -*-

# @时间:2022-07-23

# @作者:卡尔_DJ

def online_open(网址,模式):

导入请求

r=requests.get(url)

filename=url.split('/')[-1]

用打开(文件名,' w ')作为f1:

f1。写(r .内容。解码(' utf-8 '))

f2=打开(文件名,' r ')

返回第二子代

导入文件输入

file _ URL=' https://www。csdn。网络/机器人。'文本'

使用文件输入。input(files=(file _ URL,),openhook=online_open)作为文件:

对于文件中的行:

打印(行,结束=' ')

运行结果

总结

关于文件输入的介绍,也就介绍到这里。

文件输入本身是对打开函数的再次封装,所以在读取的复写的副本部分,就比打开显得更专业,更优雅,这也是仅限于读取的方面。

在写作方面,与开放相比,它没有那么强。

归根结底,fileinput还是一个不错的方法。你应得的。

关于Python对读取文件的方法的总结,本文到此为止。关于Python的读文件的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: