Python——文件
创始人
2024-03-29 18:06:07

文件

概念

我们常见的txt,jpg,mp4等等都是文件,存储在硬盘中的内容,就是文件,而文件夹是一种特殊的文件——目录文件

路径

一层一层文件夹组成的字符串就是路径,每一个文件的路径都是唯一的,相当于身份证号,可以通过路径来找到一个文件在磁盘上的详细位置,进而就可以查看修改这个文件了

路径分为绝对路径和相对路径,绝对路径在win上以盘名开头,例如D:\qq\program\bin\qq.exe,而相对路径则是以其他文件所在的地址为开头,例如以bin为相对地址,那么qq.exe的相对路径就是.\qq.exe

打开文件

使用open()方法可以获取一个文件对象
打开方式有

  1. r 按照读的方式打开
  2. w 按照写的方式打开
  3. a 按照写的方式打开,把内容写到原有文件的末尾
f = open("路径","打开方式")
f = open("/Users/lixiao/Downloads/IMG_1637.jpg","r")

如果文件路径不对或者文件不存在,就会抛出异常

需要注意的是,文件打开操作后一定要进行关闭,否则会造成内存资源泄露

f.close()

因此,python为了防止这种情况,我们的文件打开的个数是有限的,在打开一定数量的文件后,系统将会报错。系统中也可以通过一些配置项来修改最大打开文件的个数

大家可以用下面这个代码来试试自己的电脑最多打开多少个文件

count = 0
flist = []
while True:f = open("/Users/lixiao/Downloads/IMG_1637.jpg", "r")flist.append(f)count += 1print(count)

在这里插入图片描述
如果我们没有把打开的文件放到列表中,那么事实上这个数字将会一直增大,这是因为我们的python为了防止有些程序员忘记释放文件,而有的垃圾回收机制——自动将不使用的变量释放

写文件

使用“w”方式打开文件,使用write方法进行写入

f = open("/Users/lixiao/test.txt", "w")
f.write("hello")
f.close()

在这里插入图片描述
在这里插入图片描述
而如果我们不想破坏文件中的内容,将写的内容追加到原文件的后面,就需要用到a方式打开

如果文件对象已经关闭,那么就不能对文件内容进行更改,否则会抛出异常

读文件

使用r方式打开文件,然后使用read()方法可以取出文件的内容,如果传参就代表读几个字节

f = open("/Users/lixiao/test.txt", "r")
print(f.read())
f.close()

在这里插入图片描述
由于有多个版本的编码方式,因此如果我们要读有中文的文件,那么就不能使用python默认的gdk编码,而是要用utf-8
在打开文件时,可以使用encoding来设置字符编码

f = open("/Users/lixiao/test.txt", "r", encoding='utf8')
print(f.read())
f.close()

在这里插入图片描述
可以使用for循环来读取文件中的每一行

f = open("/Users/lixiao/test.txt", "r", encoding="utf8")
print(f.read())
for line in f:print(line)
f.close()

在这里插入图片描述
如果我们不想要print函数的结尾自动换行,那么可以设置end参数为“”

f = open("/Users/lixiao/test.txt", "r", encoding="utf8")
print(f.read())
for line in f:print(line, end="")
f.close()

还可以使用readlines()来读取文件所有的内容,结果是一个列表,其元素是文件的每一行内容

f = open("/Users/lixiao/test.txt", "r", encoding="utf8")
flines = f.readlines()
print(flines)
f.close()

在这里插入图片描述
readlines相当于一次将文件内容全部读取,而for循环遍历则是一行一行的读取文件内容,因此只要不是特别大的文件,一般来说readlines要比for循环读文件更加高效

上下文管理器

上下文管理器是为了防止我们代码结构复杂而忘记关闭文件的
在java中,我们使用try(文件),可以实现文件的自动关闭

def func():with open("/Users/lixiao/test.txt", "r", encoding="utf8") as f:# 处理文件returnfunc()

当with对应的代码块执行完毕后,就会自动的执行close了

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...