文件操作
1、 基本操作流程
(1) 创建文件对象
(2) 调用文件方法进行操作
(3) 关闭文件
例程
f=open('小重山','r',encoding='utf8')#打开同一目录文件,设置文件读模式使用编码格式 utf-8 print(f.read())#打印文件内容 fileno() 方法返回一个整型的文件描述符 # 注意:if not close,数据会缓存,而不是磁盘! time.sleep(30) f.close()
注:打开文件的模式有:
· r,只读模式(默认)。
· w,只写模式。【不可读;不存在则创建;存在则删除内容;】
· a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
· r+,可读写文件。【可读;可写;可追加】
· w+,写读
· a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n(与 r 或 r+ 模式同使用)
· rU
· r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
· rb
· wb
· ab
2、 文件具体操作方法
#打印一行 # f=open('小重山','a',encoding='utf8') # print(f.read(5)) # print(f.read(5))# 注意 :汉字在这里占一个单位(in Py3) # a=f.readline() # print(a) # print(f.readline()) # print(f.readline())#无论是read()还是readline(),光标会发生位置变化 #打印多行 # print(f.readlines()) # for i in f.readlines(): # print(i) # # f.close() # data = f.readlines() # f.close() #这是最好的 # number=0 # for i in data: # number+=1 # if number==6: # # print(i.strip(),'ikeit')#strip()移除字符串头尾指定的字符(默认为空格) # # i=i.strip()+'ikeit' # i=''.join([i.strip(),'iii'])#取代万恶的+ 移除字符串头尾指定的字符 # print(i.strip()) ##########对于大数据文件,要用以下方式(the best way): # number = 0 # for i in f: # number+=1 # if number == 6:#到第六行后面添加'iiiii' # i = ''.join([i.strip(),'iiiii'])#取代万恶的+ # # print(i.strip())#打印当前行(第六行) # print(i.strip())#打印整行 # print(f.tell())#取出光标位置 # print(f.read(2)) # print(f.tell()) # f.seek(0)#移动光标到指定位置 # print(f.read(4)) # flush()#同步 将数据从缓存转移到磁盘上去 #进度条实例 # import sys,time # for i in range(30): # sys.stdout.write("*") # sys.stdout.flush() # time.sleep(0.1)#每0.1秒刷新一次 #print的flush # import sys,time # for i in range(30): # print('*',end='',flush=True) # time.sleep(0.1) # f=open('小重山','r',encoding='utf8') #truncate():截断数据(不能在r模式下) #在w模式下:先清空,再写,在截断 #在a的模式下:直接将指定位置后的内容截断 # f=open('小重山','a',encoding='utf8') # f.truncate(5) # f.write('hello world') # f.truncate(5) # f.close() ##### r+, w+, a+ # r+:光标默认在0位置,最后位置开始写 # w+:先清空,再写读 # a+:光标默认在最后位置 # f=open('小重山','r+',encoding='utf8') # print(f.tell()) # print(f.readline()) # f.write('岳飞') # print(f.tell()) # f.seek(0) # print(f.readline()) # f.close() # f=open('小重山','r+',encoding='utf8') #终极问题 # number=0 # for line in f: # number+=1 # if number==3: # f.write('alex') # f_read=open('小重山','r',encoding='utf8') # f_write = open('小重山2','a+',encoding='utf8') # # number=0 # for line in f_read: # number+=1 # if number==5: # line=''.join([line.strip(),'alex\n']) # # line='hello 岳飞' # f_write.write(line) # # f_write.close() # f_read.close() # a=str({'beijing':{'1':111}}) # print(type(a)) # print(a) # a=eval(a) # print(type(a)) # print(a['beijing']) # f=open('log','r') # f.readline() # f.read() # f.close() # # with open('log','r') as f: # f.readline() # f.read() # print('hello') # # # with 同时管理多个文件对象 # with open('log1','r') as f_read,open('log2','w') as f_write: # for line in f_read: # f_write.write(line)