python文件操作

python文件操作相关知识总结


  1. 读文件操作(open)

语法:open(filename,mode)
filename表示文件名,mode表示打开的模式(见图片)

这里写图片描述


f=open("text.txt","r")

使用open打开文件后就可以开始读文件了,如果只用r开头的mode读文件,文件不存在,则会抛出IOError的错误,读取成功后用函数读取文文件

f.read()#一次读取所有内容
f.read(size)#每次读取最多size个字节的内容
f.readline()#readline() 方法用于从文件读取整行,包括 "\n" 字符
for line in f.readlines():#一次性对所有内容并按行返回list
    print(line.strip()) # 把末尾的'\n'删掉
#f.next():
for index in range(5):
    line = next(f)
    print ("第 %d 行 - %s" % (index, line))

文件读取完毕后一定要调用f.close()关闭文件,因为文件对象会占用操作系统的内存资源,,并且操作系统同一时间能打开的文件数量也是有限的,一种完整的写法:

try:
    f = open('a.txt', 'r')
    print(f.read())
finally:
    if f:
        f.close()#文件对象一定会关闭

另外python引入了with语句来帮我们自动调用close()函数,就像这样:

with open('a.txt', 'r') as f:
    print(f.read())

注意如果要读取非UTF-8编码的文本文件需要给open()函数传入encoding参数如:

 f = open('gbk.txt', 'r', encoding='gbk')
 f.read()

  1. 写文件
    通过前面的图片内容,写文件的操作例子:
f = open("foo.txt", "w",encoding="UTF-8")  #写的方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式
f.write("我要学Python\n")       #写入,文件夹存在覆盖,不存在创建
f.close()    #关闭文件夹

记住一定要调用close语句,因为操作系统会先把内容写到内存中,只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘,忘记调用,可能只写入了一半,如果用with语句,就会避免这个错误:

with open('test.txt', 'w') as f:
    f.write('Hello, world!')

读写模式:

f = open("a.txt", "w+",encoding="UTF-8")  #写的方式打开的文件,encoding是转码的意思
,告诉解释器,是以UTF-8的格式
f.write("我要学Python\n")       #写入,文件夹存在覆盖,不存在创建
print("定位之前的光标位置:%s" % (f.tell()))
f.flush()                       #刷新文件使内存的内容刷新至文件夹
f.seek(0,0)                       #因为W+读取文件之后会定位在文件尾部,
所以需要重新定位一下光标位置,要不无法读取,file.seek(off, whence=0):
从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数
,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
print("定位之后的光标位置:%s" % (f.tell()))
i = f.read()
print(i)
f.close()    #关闭文件夹
输出:
定位之前的光标位置:17
定位之后的光标位置:0
我要学Python

writelines() 方法用于向文件中写入一序列的字符串:

seq = ["我要学Python 1\n", "我要学Python 2"]
fo.writelines( seq )

文件的操作方法:
如图


(完)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值