2021-08-05

Python文件的基本操作(一)——文件操作

一、打开文件

file = open(filename,'w')

1.open()该函数为python内置的方法,用于创造文件对象打开文件。
2.file是被创建的用于文件对象,相当于一个可以用于读取文件内容,写入文件的接口,文件对象可以使用符合标准的命名。
3.filename为要打开的文件名,当该文件与代码文件在同一文件夹下时,可以直接输入文件名,否则要输入文件的绝对路径。
4.'w'为文件打开的方式,具体打开方式有以下几种:

打开方式作用
r只读模式打开文件,从文件开头开始读文件
rb以二进制格式打开文件,从文件开头开始读文件
r+读写模式打开文件,读写操作从文件开头开始,写会覆盖原文件
rb+二进制格式读写模式打开文件

⚠️r类打开文件的必要条件是该文件必须存在,否则会报错:“No such file or directory:”

打开方式作用
w以只写的模式打开文件
wb以二进制格式只写模式打开文件
w+以读写模式打开文件,会先将文件的内容清空
wb+以二进制格式读写模式打开文件

w类的打开方式文件可以是不存在的,当代码执行后会创建代码中filename文件,如以下代码执行:file = open('test.txt','w')请添加图片描
⚠️需要注意的是如果filename不是绝对路径,文件会在控制台所在的当前目录进行创建,如下图所示,我的控制台所处的目录为“文件读写”这一文件夹,故“test.txt”也是创建在该文件夹下的。⚠️并且w类打开文件的方式,会将原文件的内容进行覆盖,即会将原来的内容删除然后写进新的内容。
请添加图片描述
那么当希望不覆盖原文件的内容而继续写入文件时,则可以用a类文件打开方式。

打开方式作用
a以追加模式打开文件,写入的内容将从原文件末尾开始写入 ,当文件不存在时创建文件
ab以二进制格式追加模式打开文件
a+以追加读写模式打开文件
ab+以二进制格式追加读写模式打开文件

需要说明的是a方式打开文件,如果文件不存在也会创建文件。并且对一般的文件并不以二进制格式打开文件,对图片、音视频文件使用二进制格式打开才有意义。

当打开文件出现“UnicodeDecodeError”时,说明open函数默认的编码方式无法打开文件,可以通过指定编码方式打开文件

file = open('test.txt','r',encoding = 'utf-8')

二、关闭文件

关闭文件使用close(),如关闭上面打开的test.txt文件file.close(),对于完成写操作的文件,关闭文件这一操作相当重要,因为写入的信息首先会存在缓冲区,当文件close()之后才能将缓冲区里的内容写入文件,为避免不必要的意外,应当在完成写操作后及时关闭文件。

还有一种方法可以避免忘记close()操作而导致文件可能被意外更改,即在打开文件时使用with语句,如:

with open('test.txt','w') as file:
	pass

当pass部分的代码,即with下的代码被执行完后,文件会被自动关闭。

三、写入文件

当打开文件获得文件对象之后,可以通过文件对象将数据写入文件file.write(data),如:
连续写入5个字符串:

with open('test.txt','w') as file:
    str = "征鸿Bobibala"
    for i in range(0,5):
        file.write(str)

运行结果:请添加图片描述
换行输入:

with open('test.txt','w') as file:
    str = "征鸿Bobibala"
    for i in range(0,5):
        file.write(str+'\n')

运行结果:请添加图片描述
⚠️需要注意的是,写入的内容必须是str即字符串格式的,不然会报错。

四、读取文件

读取文件常用的方法是file.read(),默认将全部数据读出,如:

with open('test.txt','r') as file:
    content = file.read()
    print(content)

输出结果:请添加图片描述

也可以设置读出字符的数量:

with open('test.txt','r') as file:
    content = file.read(5)
    print(content)

输出结果:
请添加图片描述
还可以通过seek()函数用于更改开始读取的位置,再用read()进行从新的位置进行数据读取,但不常用故不细说。

数据还可以一行一行进行读取,为区分效果,test.txt文件中存入数据为《登鹳雀楼》,在文件中的数据如图:
请添加图片描述
输出一行:

with open('test.txt','r') as file:
    content = file.readline()
    print(content)

输出结果:
请添加图片描述
输出三行:

with open('test.txt','r') as file:
    for i in range(0,3):
        content = file.readline()
        print(i,content)

输出结果:
请添加图片描述
输出的空隙是输出效果,并不算一行,由前面的数字可以知道输出的为三行,运用循环可以将文件内容逐行输出。

输出全部行可以使用file.readlines(),如:

with open('test.txt','r') as file:
    content = file.readlines()
    print(content)

输出如下,输出全部行会以列表的格式进行输出,连同换行符一同输出。
请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值