# r:只读方式,文件的指针将会放在文件的开头;若文件不存在则报错。(这是默认模式)
# w:写方式,重新创建文件;即不存在就创建,存在则覆盖
# a:追加方式;不存在创建,存在则追加内容(文件指针将会放在文件的结尾)
# 特殊方式(rb、wb、ab):以二进制格式打开文件,网络传输以及二进制文件(视频、音频等,字符串文件也可用二进制形式打开)操作
# +形式:r、w、a、rb、wb、ab均可以使用+形式,在原有形式上增加读或写功能。
# 注意
# 读:可以调整文件指针,读取不同位置数据。
# 写:不能修改原有内容,只能重新覆盖,或者尾部追加。
1 f = open(‘yesterday‘,mode= ‘r+‘,encoding=‘utf-8‘) #文件句柄 2 data = f.read() 3 print(data) 4 5 ‘‘‘ 6 f.write(‘aaaaaaaaaaaaaaaaa‘) #报错 7 8 f = open(‘test1.txt‘,mode= ‘w‘,encoding=‘utf-8‘) #文件句柄 9 f.write(‘bbbbbb‘) #每次运行均被覆盖 10 11 #data = f.read() #报错 12 #print(data) 13 f1 = open(‘test1.txt‘,mode= ‘a‘,encoding=‘utf-8‘) #文件句柄 14 f1.write(‘出错出错错错错错错错错‘) #尾部追加 15 16 ‘‘‘
1 f = open(‘yesterday‘,mode= ‘r‘,encoding=‘utf-8‘) 2 3 #打印行 4 count = 0 5 for line in f: 6 if count == 9: 7 print(‘我是分隔符‘.center(50,‘-‘)) 8 count +=1 9 continue 10 print(line.strip()) 11 count +=1 12 13 ‘‘‘ 14 #不建议使用,文件大速度慢,甚至承包内存 15 for index,line in enumerate(f.readlines()): 16 if index == 9: 17 print(‘我是分隔符‘.center(50,‘-‘)) 18 continue 19 print(line.strip()) 20 21 #for i in range(5): 22 # print(f.readline()) 23 ‘‘‘ 24 print()
1 f = open(‘yesterday‘,mode= ‘r+‘,encoding=‘utf-8‘) 2 3 #文件句柄信息 4 print(‘文件句柄信息‘.center(50,‘-‘)) 5 print(f) 6 print(f.name) #文件名称 7 print(f.fileno()) #文件内存编号 8 f.flush() #文件刷新,文件修改并不是实时进行,修改信息先保存在缓存中,一定内容后刷新。 9 print( f.isatty() ) #如果文件连接(与终端设备关联)到tty(类似)设备则返回True,否则为false。
1 #文件读取 2 print(‘文件读取‘.center(50,‘-‘)) 3 print(‘是否可读‘,f.readable()) #是否可读 4 print(‘读取指定长度内容‘,f.read(10)) #读取指定长度内容 5 print(‘读取一行‘,f.readline()) #读取一行 6 print(type(f.readlines())) #读取全部内容到一个列表,不建议使用。 7 print(‘是否可调整指针位置‘,f.seekable()) #是否可调整指针位置 8 print(‘获取指针位置‘,f.tell()) #获取指针位置 9 print(‘调整指针位置‘,f.seek(0)) 10 print(‘读取指定长度内容‘,f.read(10)) 11 print(‘获取指针位置‘,f.tell())
1 #文件修改 2 ‘‘‘ 3 1234567890 4 abcdefghij 5 ‘‘‘ 6 print(‘文件修改‘.center(50,‘-‘)) 7 f1 = open(‘test1.txt‘,mode= ‘r+‘,encoding=‘utf-8‘) 8 f1.seek(10) 9 #方法用于截断文件: 10 # 如果指定了可选参数 size,则表示截断文件为 size 个字符(从头开始截取)。 11 # 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。 12 print(f1.truncate() ) 13 print(‘是否可写‘,f1.writable()) 14 f1.write(‘abcdefhijk‘) #写入数据,在文件末尾 15 f1.write(‘\nList:‘) 16 f1.writelines([‘L‘,‘M‘]) #可以是列表,元组,集合,字典(写入值) 17 f1.write(‘\nTuple:‘) 18 f1.writelines((‘O‘,‘P‘)) 19 f1.write(‘\nSet:‘) 20 f1.writelines(set([‘O‘,‘P‘])) 21 f1.write(‘\nDictionary:‘) 22 f1.writelines({‘Keys‘:‘Values‘,‘Keys1‘:‘Values1‘}) 23 24 f.close() #文件关闭 25 f1.close()
运行前:
运行结果:
刷新函数:文件操作并非实时写入文件,如需实时写入则要用flush函数。
1 import sys,time 2 3 for i in range(20): 4 sys.stdout.write("#") 5 sys.stdout.flush() 6 time.sleep(0.1) 7 8 print(‘‘) 9 10 for i in range(20): 11 print("#",end=‘‘,flush=‘True‘) 12 time.sleep(0.1)
运行可看出效果。
with语句:使用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会执行规定的__exit__(“清理”)操作,释放被访问的资源,比如有文件读写后自动关闭、线程中锁的自动获取和释放等。
1 #一行,最好不超过80个字符 2 with open(‘yesterday‘,mode= ‘r‘,encoding=‘utf-8‘) as f ,3 open(‘yesterday‘,mode= ‘r‘,encoding=‘utf-8‘) as f1: 4 for i in f: 5 print(i,end=‘‘)
原文:https://www.cnblogs.com/104cz/p/9581684.html