Python攻关之文件操作

#__author:“Zph”
#date: 2019/12/3
一、文件
对文件操作的流程
打开文件,得到文件句柄并赋值给一个变量
通过句柄对文件进行操作
关闭文件

1.文件的读模式

(1)

 data = open('文件示例','r',encoding='utf8').read()   #r为读模式
 print(data)
 f.close()


 f = open('文件示例','r',encoding='utf8')   #打开文件

 data = f.read()
 print(data)

 data = f.read(5)     #取五个字符
 print(data)
 f.close()

2.文件的写模式

这里的写 会覆盖之前的内容 如果你没有这个文件 会自动创建

 f = open('文件示例2','w',encoding='utf8')          #w为写模式
 f.write('ss')
 f.write('zhang')   #再次执行 会追加到后面
 f.close()
因为写会覆盖,所以用append去追加   追加模式
f = open('文件示例2','a',encoding='utf8')
f.write('hello')
f.close()

4.readlines

f = open('文件示例','r',encoding='utf8')
print(f.readline())     #打印第一行
print(f.readline())     #再次执行  打印下一行

print(f.readlines())     #打印成列表

(1)可以利用循环遍历列表 输出文件

number = 0
for i in f.readlines():    #可以利用循环遍历列表 输出文件
    number += 1
    if number == 6:
        i = ''.join([i.strip(),'iiiii'])   #用jon 方法进行字符串的拼接
    print(i.strip())

f.close()
 number = 0
 for i in f:     #这是for内部将 i 对象做成一个迭代器,用一个取一个
     number += 1
     if number == 6:
         i = ''.join([i.strip(),'iiiii'])
     print(i.strip())

6.tell 查看光标的位置 中文与英文不同 tell一个中文占三个字符

f = open('文件示例','r',encoding='utf8')
print(f.tell())
print(f.read(10))
print(f.tell())
f.close()

7.seek 调整光标的位置

f = open('文件示例','r',encoding='utf8')
 f.seek(10)
 print(f.read(4))

8.flush 将数据立马写入磁盘

f = open('文件示例','w',encoding='utf8')
f.write('zhang')
f.write('hello')
f.flush()

比如可以用flush作一个进度条

import sys,time
for i in range(30):
    sys.stdout.write('*')
    sys.stdout.flush()
    time.sleep(0.1)

9.truncate 截断 将光标后的内容删除

 f = open('文件示例','a',encoding='utf8')
 f.seek(20)
 f.truncate(2)
 f.close()

10.r+ 模式 w+模式 a+模式

(1)r+ 可读可写 不会格式化源文件

f = open('文件示例','r+',encoding='utf8')
print(f.readline())
f.write('zhang')
f.close

(2)w+模式 可读可写 但是会格式化之前的文件

f = open('文件示例','w+',encoding='utf8')
print(f.readline())
f.write('zhang')
print(f.tell())
#可知w+模式的光标是从zhang后开始读
f.seek(0)
print(f.readline())    #为了读出zhang  需要借助tell调整光标
f.close

11.修改文件

 f_read = open('文件示例','r',encoding='utf8')
 f_write = open('文件示例三','w',encoding='utf8')

 number = 0
 for line in f_read:
     number +=1
     if number == 5:
         line = 'hello world\n'              修改那一行的内容
         line = ''.join([line.strip(),'hello world\n'])          #给那一行添加内容
     f_write.write(line)
 f_read.close()
 f_write.close()

12.with
(1)

自动关闭文件   推荐使用with打开文件
 with open('文件示例','r') as f:

 等同与  f = openopen('文件示例','r')

这两种的区别就在于 with会帮你取去自动关闭文件

(2)with 可以同时操作两个文件

同时管理多个文件对象

 with open('文件示例','r') as f_read , open('文件示例三','') as f_write:
     for line ....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值