Python学习笔记——Day08

Python学习笔记——Day08

今天复习文件处理。

文件处理复习

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

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

模式 r r+ w w+ a a+
+ + + +
+ + + + +
创建 + + + +
覆盖 + +
指针在开始 + + + +
指针在结尾 + +

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

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()

结语

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

let’s do more of those!

发布了26 篇原创文章 · 获赞 2 · 访问量 2338

猜你喜欢

转载自blog.csdn.net/qq_42909545/article/details/103244833