Python基础——文件

1.文件打开

  • 文件(file)操作:通过Python程序来对计算机中的各种文件进⾏增删改查的操作
  • 文件的操作步骤
    • 打开文件
    • 对文件进⾏各种操作(读、写)然后保存
    • 关闭文件
  • ⽂件会有⼀个返回值。返回⼀个对象,这个对象就表示的是当前的⽂件
# 文件操作
file_name = 'myfile.txt'
# 打开文件
file_obj = open(file_name)
# 读取文件
content = file_obj.read()
print(content)      #Without learning, men grow as cows do increasing only in flesh not wisdom.
# 关闭文件
file_obj.close()

2.关闭文件

  • 调⽤close()方法来关闭文件
  • with…as 语句不⽤写close()来关闭。它自带关闭
# with ... as ...
file_name = 'myfile.txt'
with open(file_name) as file_obj:
    content = file_obj.read()
    print(content)      #Without learning, men grow as cows do increasing only in flesh not wisdom.

content = file_obj.read()       #ValueError: I/O operation on closed file.

3.读取文件

  • 通过read()来读取文件的内容
  • 调⽤open()来打开⼀个文件,可以将文件分为2种类型
    • ⼀种 纯文本文件(使用utf-8编码编写的文件)
    • ⼀种 二进制文件(图片 mp3 视频…)
    • open()打开文件时,默认是以⽂本⽂件的形式打开的 open()默认的编码 为None。所以处理文本文件时要指定编码
# 纯文本文件 open中指定encoding='utf-8'
file_name = 'myfile.txt'
with open(file_name,encoding='utf-8') as file_obj:
    content = file_obj.read()
    print(content)

#Without learning, men grow as cows do increasing only in flesh not wisdom.
# 上穷碧落下黄泉,两处茫茫皆不见.
# 二进制文件 open中指定'b' 即byte数据
file_name = r'D:\111\src\bgm.mp3'
with open(file_name,'rb') as file_obj:
    chunk = 100
    content = file_obj.read(chunk)
    print(content,end='')
    # b'ID3\x03\x00\x00\x00\x00\t]TPE1\x00\x00\x00\r\x00\x00\x00Sofia JannokTCON\x00\x00\x00\x06\x00\x00\x00WorldTIT2
    # \x00\x00\x00\x0f\x00\x00\x00Liekkas [Warm]TALB\x00\x00\x003\x00\x00\x01\xff\xfes\x00s\x00o\x00g\x00t\x00t\x00i'

4.较大文件的读取

  • 通过read()读取⽂件内容时会将⽂件中所有的内容全部读取出来。如果对于读取的文件比较大的话。会⼀次性的将文件加载到内容中。容易导致内存泄露。所以对于较大的文件。不要直接调⽤
  • read() read()可以接收⼀个size作为的参数。该参数⽤来指定要读取字符的数量。默认值为-1,-1也就是要读取全部的内容
  • 每次读取都会从上次读取到的位置开始。如果字符的数量小于size。则会读
    取所有的。如果读取到最后的⽂件。则会返回空串
  • readline() 该⽅法用来读取一行
  • readlines() 该⽅法用于一行一行的读取内容,它会⼀次性将读取到的内容封
    装到⼀个列表当中返回
myfile.txt
1. 他的橡胶靴子踢起阵阵雪花,已经飞奔到街道的拐角处。他停下来,转身,双手放在嘴边,说:“为你,千千万万遍!” --卡勒德·胡赛尼 《追风筝的人》
2. 许多年过去了,人们说陈年旧事可以被埋葬,然而我终于明白这是错的,因为往事会自行爬爬上来。我知道电话线连着的,并不只是拉辛汗,还有我过去那些未曾赎还的罪行。为你,我千千万万遍。那儿有再次成为好人的路。——胡塞尼《追风筝的人》
3. 我很高兴终于有人识破我的真面目,我装得太累了。
4. 安静是祥和,是平静,是降下生命音量的旋钮。
5. “因为······”他抽泣着说,“因为我不想让他们看到我······我这么脏。”他深吸一口气,然后抽泣着慢慢呼出,“我很脏,浑身是罪。” ----卡勒德·胡赛尼
6. 人生最好的旅行,就是你在一个陌生的地方,发现一种久违的感动。独自旅行,不受羁绊,没有约束。有一天,背上包,带上自己,有多远,走多远。——追风筝的人
7. 如果再给你一次机会,你愿意不顾一切地去重新找回那个曾经的自己吗?——《追风筝的人》
8. 每个人的命运都像风筝一样,它往更高更远的天空,但却受着那根细细丝线的牵引而无法摆脱。但也正因有这根丝线的牵引,它才不至于消失在天际或跌落尘埃,而是在空中划出优美的人生轨迹。当这根丝线被割断,就要鼓起勇气去追寻那飘落在远方的风筝,这样才能获得内心的安宁。——《追风筝的人》
9. 被真相伤害,总比被谎言安慰要好。
10. 朋友啊...孩子们不是画册,你不能随意用自己喜欢的颜色去填涂他们,他不像你,永远都不会像你。但等着瞧吧,他会出色的。 《追风筝的人》
# 较大文件的读取
file_name = 'myfile.txt'
with open(file_name,encoding='utf-8') as file_obj:
    chunk = 10
    while True:
        content = file_obj.read(chunk)
        if not content:
            break
        print(content,end='')

# 1. 他的橡胶靴子踢起阵阵雪花,已经飞奔到街道的拐角处。他停下来,转身,双手放在嘴边,说:“为你,千千万万遍!” --卡勒德·胡赛尼 《追风筝的人》
# 2. 许多年过去了,人们说陈年旧事可以被埋葬,然而我终于明白这是错的,因为往事会自行爬爬上来。我知道电话线连着的,并不只是拉辛汗,还有我过去那些未曾赎还的罪行。为你,我千千万万遍。那儿有再次成为好人的路。——胡塞尼《追风筝的人》
# 3. 我很高兴终于有人识破我的真面目,我装得太累了。
# 4. 安静是祥和,是平静,是降下生命音量的旋钮。
# 5. “因为······”他抽泣着说,“因为我不想让他们看到我······我这么脏。”他深吸一口气,然后抽泣着慢慢呼出,“我很脏,浑身是罪。” ----卡勒德·胡赛尼
# 6. 人生最好的旅行,就是你在一个陌生的地方,发现一种久违的感动。独自旅行,不受羁绊,没有约束。有一天,背上包,带上自己,有多远,走多远。——追风筝的人
# 7. 如果再给你一次机会,你愿意不顾一切地去重新找回那个曾经的自己吗?——《追风筝的人》
# 8. 每个人的命运都像风筝一样,它往更高更远的天空,但却受着那根细细丝线的牵引而无法摆脱。但也正因有这根丝线的牵引,它才不至于消失在天际或跌落尘埃,而是在空中划出优美的人生轨迹。当这根丝线被割断,就要鼓起勇气去追寻那飘落在远方的风筝,这样才能获得内心的安宁。——《追风筝的人》
# 9. 被真相伤害,总比被谎言安慰要好。
# 10. 朋友啊...孩子们不是画册,你不能随意用自己喜欢的颜色去填涂他们,他不像你,永远都不会像你。但等着瞧吧,他会出色的。 《追风筝的人》
# readline    readlines
file_name = 'myfile.txt'
with open(file_name,encoding='utf-8') as file_obj:
    # content = file_obj.readline()
    # print(content)
    # 1. 他的橡胶靴子踢起阵阵雪花,已经飞奔到街道的拐角处。他停下来,转身,双手放在嘴边,说:“为你,千千万万遍!” --卡勒德·胡赛尼 《追风筝的人》
    content = file_obj.readlines()
    print(content)
    print(type(content))
    # ['1. 他的橡胶靴子踢起阵阵雪花,已经飞奔到街道的拐角处。他停下来,转身,双手放在嘴边,说:“为你,千千万万遍!” --卡勒德·胡赛尼 《追风筝的人》\n',
    #  '2. 许多年过去了,人们说陈年旧事可以被埋葬,然而我终于明白这是错的,因为往事会自行爬爬上来。我知道电话线连着的,并不只是拉辛汗,还有我过去那些未曾赎还的罪行。为你,我千千万万遍。那儿有再次成为好人的路。——胡塞尼《追风筝的人》\n',
    #  '3. 我很高兴终于有人识破我的真面目,我装得太累了。\n', '4. 安静是祥和,是平静,是降下生命音量的旋钮。\n',
    #  '5. “因为······”他抽泣着说,“因为我不想让他们看到我······我这么脏。”他深吸一口气,然后抽泣着慢慢呼出,“我很脏,浑身是罪。” ----卡勒德·胡赛尼\n',
    #  '6. 人生最好的旅行,就是你在一个陌生的地方,发现一种久违的感动。独自旅行,不受羁绊,没有约束。有一天,背上包,带上自己,有多远,走多远。——追风筝的人\n',
    #  '7. 如果再给你一次机会,你愿意不顾一切地去重新找回那个曾经的自己吗?——《追风筝的人》\n',
    #  '8. 每个人的命运都像风筝一样,它往更高更远的天空,但却受着那根细细丝线的牵引而无法摆脱。但也正因有这根丝线的牵引,它才不至于消失在天际或跌落尘埃,而是在空中划出优美的人生轨迹。当这根丝线被割断,就要鼓起勇气去追寻那飘落在远方的风筝,这样才能获得内心的安宁。——《追风筝的人》\n',
    #  '9. 被真相伤害,总比被谎言安慰要好。\n', '10. 朋友啊...孩子们不是画册,你不能随意用自己喜欢的颜色去填涂他们,他不像你,永远都不会像你。但等着瞧吧,他会出色的。 《追风筝的人》']
	#	<class 'list'>

5.文件的写入

  • write()来向文件中写⼊内容
    • 该⽅法可以分多次向文件写⼊内容
    • 写⼊完成之后该⽅法会返回写⼊的字符的个数
file_name = 'poem.txt'
with open(file_name,'w',encoding='utf-8') as poem_obj:
    # 多次写入
    s1 = poem_obj.write('人生若只如初见,')
    s2 = poem_obj.write('何事秋风悲画扇?')
    print(s1,s2)            #8 8
  • 使⽤open()函数打开文件时,必须要指定打开文件要做的操作(读、写、追 加)。如果不指定操作类型,则默认是读取文件,⽽读取⽂件是不能向⽂件中写⼊
    • r 表示只读
    • w表示可以写。使⽤w写⼊文件时,如果⽂件不存在则会创建⼀个文件。如果⽂件存在则会覆盖原文件内容

6.二进制文件写入

  • 读取文本文件时,size是以字符为单位。读取二进制文件时,size是以字节为单位
  • 我们⽤wb来写⼊⼆进制文件
# 写入二进制文件
file_name = r'D:\111\src\bgm.mp3'
bgm = 'bgm.mp3'
with open(file_name,'rb') as file_obj:
    with open(bgm, 'wb') as bgm_obj:
        chunk = 1024 * 100
        while True:
            content = file_obj.read(chunk)
            if not content:
                break
            bgm_obj.write(content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值