Python中文件的基本操作

304 阅读4分钟

「这是我参与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中文件的打开与关闭变得十分简单快捷,文件在关闭的时候就会自动保存