Python基础之文件操作

本文介绍了Python中的文件操作,包括打开文件、读写模式、管道重定向、随机存取、读写行、文件关闭以及迭代文件内容的方法。重点讲解了使用with语句管理文件,以及fileinput模块实现延迟行迭代。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、打开文件

使用open函数打开文件,位于自动导入的模块io中

		函数open参数mode常见取值
----------------------------------------------
值 						描 述	
-----------------------------------------------	
'r' 				读取模式(默认值)
'w' 				写入模式
'x' 				独占写入模式
'a' 				附加模式
'b' 				二进制模式(与其他模式结合使用)
't' 				文本模式(默认值,与其他模式结合使用)
'+' 				读写模式(与其他模式结合使用)
  • 显式地指定读取模式('r')的效果与根本不指定模式相同
  • 写入模式让你能够写入文件,并在文件不存在时创建它。在写入模式下打开文件时,既有内容将被删除(截断),并从文件开头处开始写入;如果要在既有文件末尾继续写入,可使用附加模式。
  • 独占写入模式更进一步,在文件已存在时引发FileExistsError异常。
  • '+'可与其他任何模式结合起来使用,表示既可读取也可写入。要打开一个文本文件进行读写,可使用’r+’。
  • 请注意,'r+'和’w+'之间有个重要差别:后者截断文件,而前者不会这样做。

二、文件的基本方法

2.1 读取和写入

文件最重要的功能是提供和接收数据。如果有一个名为f的类似于文件的对象,可使用f.write来写入数据,还可使用f.read来读取数据。

  • 当调用f.write(string)时,你提供的字符串都将写入到文件中既有内容的后面。

>>> f = open('somefile.txt', 'w')
>>> f.write('Hello, ')
7
>>> f.write('World!')
6
>>> f.close()

在这里插入图片描述

  • 请注意,使用完文件后,我调用了方法close
    读取也一样简单,只需告诉流你要读取多少个字符(在二进制模式下是多少字节)。
    请注意,调用open时,原本可以不指定模式,因为其默认值就是’r’

2.2 使用管道重定向输出

$ cat somefile.txt | python somescript.py | sort

# somefile.txt 要有内容存在  则上述命令才可以执行
# 由于我的Linux系统没有配置python故在此无法展示

# somescript.py
import sys
text = sys.stdin.read()
words = text.split()
wordcount = len(words)
print('Wordcount:', wordcount)

在这里插入图片描述

  • 展示 :
# somefile.txt 内容如下
Your mother was a hamster and your
father smelled of elderberries.

# 执行下面
cat somefile.txt | python somescript.py
结果如下:Wordcount: 11

2.3 随机存取

在文件中移动,只访问感兴趣的部分(称为随机存取)使用文件对象的两个方法:seektell

  • seek(offset[, whence])
  • 将当前位置(执行读取或写入的位置)移到offset 和whence 指定的地方。
  • 参数offset 指定了字(字符)数,
  • 参数whence 默认为io.SEEK_SET(0),这意味着偏移量是相对于文件开头(偏移量不能为负数)
  • 参数whence 设置为io.SEEK_CUR(1),表示相对于当前位置进行移动(偏移量可以为负),
  • 参数whence 设置为io.SEEK_END(2),表示相对于文件末尾进行移动
>>> f = open(r'C:\text\somefile.txt', 'w')
>>> f.write('01234567890123456789')
20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胜天半月子

打不打商的无所谓,能帮到你就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值