Python学习笔记——Day08

Python学习笔记——Day08

今天复习文件处理。

文件处理复习

模式描述
t文本模式(默认)
x写模式,新建一个文件,如果该文件已存在则会报错
b二进制模式
+打开一个
U通用换行模式
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等
r+打开一个文件用于读写。文件指针将会放在文件的开头
rb+打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

总结
上图是对上面的集中模式的一个总结。事实上,这个图和表格我都是从菜鸟教程得到的。
既然都已经有俩了,那就再来一张表吧,多多益善。

模式rr+ww+aa+
++++
+++++
创建++++
覆盖++
指针在开始++++
指针在结尾++

额,不得不说,写上瘾了,那再来一段吧。

File对象的属性

属性描述
file.close返回true如果文件已被关闭,否则返回false。
file.mode返回被打开文件的访问模式。
file.name返回文件的名称。
file.softspace如果用print输出后,必须跟一个空格符,则返回false,否则返回true。

声明:以上内容均来自菜鸟教程,感谢菜鸟教程!
接下来写一些代码来说明文件操作。

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:文件处理
import os


def main():
    # f = open("a.txt", "r")
    # 读取
    # str = f.read()
    # print("read():" + str)
    # 读取一行
    # str = f.readline(1024)
    # print("readline(): " + str)
    # 遍历每行
    # for line in f.readlines():
    #     print(line)
    # ---------------------------

    # 读取二进制
    # f = open("a.txt", "rb")
    # str = f.read()
    # print(str)

    # 写
    # f = open("a.txt", "w+")
    # length = f.write("haha")
    # print(length)
    # 输出指针位置
    # print(f.tell())
    # 重置指针为第一位
    # f.seek(os.SEEK_SET)
    # f.seek(0)
    # print(f.read())

    # 追加
    # f = open("a.txt", "a+")
    # f.write("lalala")
    # f.seek(os.SEEK_SET)
    # print(f.read())
    # f.close()

    # 事实上我们可以不用自己手动调用f.close()
    # python使用with自动调用close方法
    # with open("a.txt", "a+") as f:
    #     f.write("\nsdlfkjsdf")
    #     f.seek(os.SEEK_SET)
    #     print(f.read())

    # next 方法
    # with open("a.txt", "r+") as f:
    #     print(next(f))
    #     print(next(f))

    # 写入行
    # with open("a.txt", "w") as f:
    #    f.writelines("sdf\nsdlfjsfd\nlsdkjxcv")

    # 文件属性
    with open("a.txt", 'r') as f:
        print("文件名: " + f.name)
        print("文件采用的分隔符: " + str(f.newlines))
        print("文件编码:" + f.encoding) # 事实上是GBK
        print("文件报错级别:" + f.errors)
        print("文件打开模式:" + f.mode)
        print("文件缓冲:" + str(f.line_buffering))
        print("文件是否关闭:" + str(f.closed))


if __name__ == "__main__":
    main()

小案例

写一首古诗

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:写古诗


def main():
    with open("古诗.txt", "w+", encoding="utf-8") as f:
        f.writelines("  静夜思\n      李白\n")
        f.writelines("床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。")
        f.seek(0)
        print(f.read())


if __name__ == "__main__":
    main()

图片复制

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:写古诗


def main():
    with open("我是图片.png", "rb") as f:
        with open("我是复制的.png", "wb") as copy_f:
            copy_f.write(f.read())


if __name__ == "__main__":
    main()

写一个py文件并执行

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:写py文件并执行
import os


def main():
    with open("我是py文件.py", "w+", encoding="utf-8") as f:
        f.write("print('hello world')")
    os.system("python 我是py文件.py")


if __name__ == "__main__":
    main()

结语

大概是这样子吧。
如果你发现我的文章哪里有错误或者有什么好的想法可以联系我,我们一起学习共同进步,我的邮箱地址是lishuangCHN@gmail.com

let’s do more of those!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值