「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」
第一部分:::文件的基本操作
读 r (read) ; 写 w (write) ; 执行 x ; 追加 a (append)
文件打开的模式:
模式: 描述:
r 以只读方式打开文件,文件指针默认放在文件开头,文件不存在则报错。
r+ 打开一个文件用于读写,文件指针默认放在文件开头,文件不存在则报错。
w 打开一个文件用于写入,如果该文件已存在则将其覆盖,如果不存在,创建新文件。
w+ 打开一个文件用于读写,如果该文件已存在则将其覆盖,如果不存在,创建新文件。
a 打开一个文件用于追加,如果文件已存在,文件指针会放在文件末尾(也就是说,新的内容将会被写到已有内容之后)如果不存在,创建新文件进行写入。
a+ 打开一个文件用于读写,如果文件已存在,文件指针会放在文件结尾,文件打开时会是追加模式,如果不存在,创建新文件用于读写。
其他模式 : rb rb+ wb wb+ ab ab+
加个b的作用:以二进制的格式打开文件(比如操作音频文件,图片文件,视频文件...),进行上述操作。
1.如何打开/关闭一个文件
打开文件:
f = open(flie_path,mode = "r") #有两个参数,第一个参数是文件的位置(可以是绝对路径,也可以是相对路径),第二个参数是打开的方式,默认r
传入表示文件路径的字符串,会返回一个文件对象。
关闭文件:
f.close()
调用给定文件对象的close方法
注意:打开一个文件操作完之后,一定要关闭。
需要知道的小知识点:
(1)windows系统中:
相对路径:不带盘符的
绝对路径:带盘符的
(2)光标位置:
1.如果读完了就读不了了,因为光标的位置在最后
2.通过seek方法重新调整光标的位置
3.写完了后,光标位置在最后
例子看看:
>>f = open(r'C:\my\pycharm_work\ceshi.py','r+')
>>f.read()
'wumou love zhangmou'
>>f.read() #现在就读不了了,因为光标在上一次读完之后移动到了最后。
''
>> f.seek(0) #把光标位置调整到最前面,那么光标后面就有内容了
0
>> f.read() #现在就可以读到内容了
'wumou love zhangmou'
>> f.tell() #可以查看光标的位置
24
>> f.seek(0)
0
>> f.tell()
0
拓展:
1.读取指定大小的内容:
变量名.read() #括号里加要读的指定的字符串长度,不写则全读
2.读取文件某一行的内容:
变量名.readline() #括号里可以加参数n,n如果大于这一行的字符串长度则只能读取到整个一行,否则读取n个字符
3.读取文件多行:
变量名.readlines() #括号内可以指定参数n,不写则全读,全读的话会变成列表的形式。
4.写入内容:
f.write(变量名)
5.写入多行:(注意换行需要自己加代码)
变量名.writelines(变量名)
来个例子看看:
>> f = open(r'C:\my\pycharm_work\ceshi.py','r+')
>> f.read()
''
>> f.writelines('wumou \n zhangmou \n haha')
>> f.seek(0)
0
>> f.read()
'wumouzhangmouzhangmouwumou \n zhangmou \n haha'
>> f.seek(0)
0
>> f.readline() #这样是一下查看一行。
'wumouzhangmouzhangmouwumou \n'
>> f.readline()
' zhangmou \n'
>> f.seek(0)
0
>> f.readlines() #这样是一下查看全部行。如果加参数n,那么只会读取字符数大于n的行,比如
#n=5,第一行字符数3个,第二行字符数3个,那么就会读取这两行,因为这两行字符数加一起
#才大于n。
['wumouzhangmouzhangmouwumou \n', ' zhangmou \n', ' haha']
6.立即刷新缓冲:
变量名.flush() #可以理解为保存
举个例子\: 文件内容是: wumou
>> f1 = open(r'C:\my\pycharm_work\ceshi.py','a')
>> f1.write('shuai')
5
>> f2 = open(r'C:\my\pycharm_work\ceshi.py','r')
>> f2.read() #会发现现在读是读不到刚刚以追加方式写进入的内容shuai
'wumou'
>> f1.flush() #我们立即刷新缓冲,那么下面就可以读到了。此处作用相当于在进行文件操作之后进行保存
>> f2.seek(0)
0
>> f2.read()
'wumoushuai'
7.获取游标位置:
变量名.tell()
8.调整游标的位置:
变量名.seek(position)
总结:
持久存储:保存内存中数据都是易丢失的,只有保存在硬盘中才能持久的存储,保存在硬盘中的基本方法就是把数据写入文件中
打开和关闭:在python中文件的打开与关闭变得十分简单快捷,文件在关闭的时候就会自动保存