python全栈_day04(文件操作)

文件对象的创建

 1 # r 只读, w 写入, a 追加
 2 # r+ , w+ , a+
 3 # r+ 默认在最后面写入,a+ 打开光标在最后
 4 f = open('小重山','r',encoding='utf8')
 5 f.close()    #python会自动执行,但是不安全
 6 
 7 #退出with的程序框,就自动关闭文件   
 8 with open('log','r') as f:
 9     f.readline()
10     f.read()
11 
12 #with 同时管理多个对象
13 with open ('log1','r') as f_read, open('lohg2','w') as f_write:

 

文件对象的操作,每一步操作都会改变光标的位置

1 f.read(5)    #读取5个字符,一个中文代表一个字符
2 f.readline()    #读取一行
3 f.readlines()    #读取整个文件,形成列表,一个列表元素代表一行

 

光标

1 f.tell()         #显示当前光标的位置,一个中文3个光标
2 f.seek()      #控制光标位置

 

文件对象的修改

 1 number = 0
 2 for i in f.readlines():
 3     number += 1
 4     if number == 6:
 5         i = ''.join([i.strip(),'iiii']) #取代 + 号,更快
 6     print(i.strip())    #strip()去掉文本的换行符,因为print()自带换行符
 7 
 8 for i in f:
 9 #这是for内部将f对象做成一个迭代器,用一行取一行删一行,这样就不会整个文件读入到内存,但比readlines()慢
10     print(i.strip())
11 
12 import sys,time
13 for i in range(30):
14     sys.stdout.write("*")
15     sys.stdout.flush()      # sys.stdout 为终端操作,flush清空缓存,把缓存文件打印出来
16     time.sleep(0.2)
17 
18 f = open('小重山','r+',encoding='utf-8')
19 number = 0
20 for line in f:
21     number += 1
22     if number == 3:
23         f.write('666')      #写会在最后写,和读的内存不一样
24 f.close()

 

 

注意写入文件和读取文件类型都是字符串

1 a = str({'北京':{'1':111}})
2 print(type(a))  #a为字符串,这样才能写入到文件
3 print(a)
4 a = eval(a)     #读取a为字符串,eval()转回默认格式
5 print(type(a))
6 print(a['北京'])

 

posted @ 2019-03-21 10:07  我不是流氓鸭  阅读(57)  评论(0)    收藏  举报