01月25日【Python3 基础知识】

发布时间:2019-09-25 08:15:48编辑:auto阅读(1724)

    01月25日【Python3 基础知识】

    4.1 读写文件
    4.2 文件方法
    4.3 python2的乱码问题
    4.4 python对passwd文件进行排序

    4.1 读写文件

    访问 模式 说 明
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
    # 读写文件
    if __name__ == '__main__':
        fileName = input("输入文件名:")
        f = open(fileName, 'w', encoding="utf-8")
        while 1:
            context = input("context('EOF' will close)")
            if context == 'EOF':
                f.close()
                break
            else:
                f.write(context)
                f.write("\n")
        fRead = open(fileName, encoding="utf-8")
        readContext = fRead.read()
        print("############O###################")
        print(readContext)
        print("############X###################")
        fRead.close()

    4.2 文件方法

    # G:\PYTHON_Pro\NO_1\Basics\file03\1.txt
    ENCODING = "utf-8"
    f = open("1.txt", encoding = ENCODING)
    # name; 打印文件名
    print(f.name)
    print("2############")
    # readline(); 按行读取
    print(f.readline())
    print(f.readline())
    # readlines(); 以列表方式返回读取内容
    print("3############")
    print(f.readlines())
    # close(); 直接打开文件需要关闭文件
    f.close()
    # with;这个方式打开文件会自动关闭。read();读取文件所有内容
    print("4############")
    with open ("1.txt", "r", encoding = ENCODING) as f:
        print(f.read())

    4.3 python2的乱码问题

    python转码的过程

    源码编码 -> unicode编码 -> 目的编码

    方法一

    s.decode("utf-8").encode("gbk")

    方法二
    • import sys
    • reload(sys)
    • print(sys.getdefaultencoding())
    • sys.setdefaultencoding("utf-8")
    • print(sys.getdefaultencoding())

    4.4 python对passwd文件进行排序

    import codecs
    file = ("ps.txt")
    sortFile = "sortps.txt"
    fileContext = []
    sortUid = []
    with codecs.open(sortFile, "w") as fsort:
        with codecs.open(file, encoding="utf-8") as f:
            fileContext += f.readlines()
            for line in fileContext:
                sortUid.append(int(line.split(":")[2]))
            sortUid.sort()
            for uid in sortUid:
                for line in fileContext:
                    if str(uid) == line.split(":")[2]:
                        print(line.strip("\n"))
                        fsort.write(line.strip("\n"))

关键字