文件操作

---恢复内容开始---

#文件操作基本流程

打开→操作→关闭

   打开文件:f = open ('静夜思', 'r', encoding='utf8')

操作句柄  =  打开(创建)   (‘文件名’ ,‘打开方式’(r,w,a) , 编码方式)


操作文件:

data = f.read(3) #读取文件前3个字符
print(data) #将读取的结果打印出来

关闭文件:

f.close()

#文件操作基本方法

文件以什么方式打开(r,w,a),才能进行对应方式的操作。

读文件:
使用‘r’打开(必须文件已存在)

写文件:(刷新内容)
使用‘w’打开(打开时指针在文件开头)
f = open('静夜思2','a',encoding='utf8')
 f.write('hello world')
 f.write('alex')#操作执行过程中内容一直在缓冲区
 f.close()#所有语句执行完毕f.close()后,内容才存入磁盘

写文件:(追加内容)

使用‘a’打开(打开时指针在文件尾部)

#文件操作具体方法

f = open('静夜思2','r',encoding='utf8')

# readline()从指针位置开始读取某一行
# print(f.readline())
# print(f.readline())
# readlines()从指针位置读取剩下全部行
print(f.readlines())   #结果是列表:['hello worldalexhello worldalex\n', 'hello worldalex\n', 'hello worldalex\n', 'hello worldalex\n', 'hello worldalex']
for i in f.readlines()
  print(i.strip()) #结果是原文档表现方式,相当于
read(),即从指针位置读取剩下全部

#如何给某一行增加内容
number = 0
for i in f.readlines():
number += 1
if number == 4:
i=''.join((i.strip(),'ilikeit'))
print(i.strip())
f.close()
一般不使用readlines,直接使用f.
number = 0
for i in f: # for循环内部将f对象做成了一个迭代器,用一行取一行。
    number += 1
if number == 4:
i=''.join((i.strip(),'ilikeit'))
print(i.strip())
f.close()

 打印指针所在位置:

f = open('静夜思2','r',encoding='utf8')
print(f.tell())
print(f.read(3))
print(f.tell())
f.seek(0) #调整指针位置到第0个位置
print(f.read(4))

如何每写一行,便往磁盘中存一行

# f.flush() #将临时缓冲区的数据刷到磁盘中
#
# import sys,time
# for i in range(30):
#     sys.stdout.write('*')
#     # sys.stdout.flush()
#     time.sleep(0.2)

import time
for i in range(30):
    print('*',end='',flush=True)
    time.sleep(0.2)

从指定指针位置截断文档,删除指针后边所有内容

f = open('静夜思','a',encoding='utf8')
f.truncate(5) # 只保留文档前五个字符

#以r+,w+,a+方式打开文件

r+先读后写(先执行代码中所有‘读’语句,再执行所有‘写’语句,与代码书写顺序无关)

执行写操作时,直接在文件尾部追加内容。

f = open('静夜思','r+',encoding='utf8')
f.write('stupid')    #执行顺序:4
print(f.readlines()) #执行顺序:1
f.write('stupid')    #执行顺序:5
print(f.readlines()) #执行顺序:2
f.write('stupid')    #执行顺序:6
print(f.readlines()) #执行顺序:3

w+先写后读(先清空文件,再执行代码中所有‘写’语句,再执行所有‘读’语句,与代码书写顺序无关)

a+先写后读(先执行代码中所有‘写’语句,再执行所有‘读’语句,与代码书写顺序无关)

#如何修改文件

 给文件的某一行增加内容

f = open('静夜思','r',encoding='utf8')
f2 = open('副本3','w',encoding='utf8')
number = 0
for line in f:
    number += 1
    if number ==3:
        line=''.join((line.strip(),'PPAP\n'))
    f2.write(line)
f.close()
f2.close()

# with语句的使用(避免使用.close)

with open('静夜思','r',encoding='utf8') as f, open('副本4','w',encoding='utf8') as f2:
    number = 0
    for line in f:
        number += 1
        if number ==3:
            line=''.join((line.strip(),'PPWP\n'))
        f2.write(line)

 

---恢复内容结束---

posted on 2018-06-13 09:59  游乐  阅读(87)  评论(0编辑  收藏  举报

导航