Python学习笔记_1_基础_6:文件

一、打开文件

1、打开方式

# 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 '''

2、打印文件

 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、文件句柄信息

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。

2、文件读取

 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())

3、文件修改

 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函数

刷新函数:文件操作并非实时写入文件,如需实时写入则要用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语句(基本,后续完善)

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='')

猜你喜欢

转载自www.cnblogs.com/104cz/p/9581684.html
今日推荐