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['北京'])

浙公网安备 33010602011771号