zoukankan      html  css  js  c++  java
  • day05.1-文件处理

    1. 文件处理流程

    • 打开文件,得到文件句柄并赋值给一个变量;
    • 通过句柄对文件进行操作;
    • 关闭文件
    1 with open("filename","r",encoding="utf-8") as f:
    2     data = f.read()
    3     print(data)
    4     f.close()

    2. 文件操作权限(文件操作内容的数据类型必须为字符串型)

    • "r":只读

              f.read():读取文件所有内容;

              f.readline():逐行读取文件内容;

              f.readable():判断文件是否可读;

              f.readlines():按行读取文件所有内容,以列表形式返回。

    • "w":只写(若文件不存在,则在打开操作路径下重新创建空白文件)

              f.write("alex "):将指定内容写入文件;

              f.writelines(["alex ","bob "]):将列表中元素依次写入文件

    • "a":追加(追加式写入文件内容)

              f.write("alex "):将指定内容追加式写入文件末尾

    • "r+":读写(既能读取文件内容,又能追加式写入文件内容)
    • "rb":字节方式读取文件内容
    • "wb":字节方式写入指定文件内容
    • "ab":字节方式追加式写入文件内容

    3. 其他文件操作方法

    • 同时打开多个文件:   
    1 with open("XXX","r",encoding="gbk") as src_f,
    2      open("XXX_new","w",encoding="gbk") as dst_f:
    • 对文件进行字节操作时,open()函数不能指定编码方式,即open("文件路径","字节操作权限")。
    • Windows中文件换行符为" ",Python会自动将所有换行符转换为" ",使用语句open("文件路径","操作权限",encoding="编码方式",newling="")禁止该默认转换操作。
    • 对字节型变量进行解码:data.decode("utf-8")
    • 对字符串变量进行字节编码:bytes(data,encoding="utf-8")或data.encoding("utf-8")。
    • 按行循环文件:
     1 """
     2 #人口信息.txt内容:
     3 {"name":"北京","population":2100000}
     4 {"name":"南京","population":1600000}
     5 {"name":"山东","population":2888888}
     6 {"name":"山西","population":1800000}
     7 """
     8 
     9 #bin.py中内容
    10 with open("人口信息.txt","r+",encoding="utf-8") as f:
    11     for item in f:
    12         print(item.strip())
    13 
    14 """
    15 运行结果:
    16     {"name":"北京","population":2100000}
    17     {"name":"南京","population":1600000}
    18     {"name":"山东","population":2888888}
    19     {"name":"山西","population":1800000}
    20 """
    • 读取文件最后一行内容:
     1 """
     2 #人口信息.txt内容:
     3 {"name":"北京","population":2100000}
     4 {"name":"南京","population":1600000}
     5 {"name":"山东","population":2888888}
     6 {"name":"山西","population":1800000}
     7 """
     8 
     9 #bin.py中内容
    10 with open("人口信息.txt","r",encoding="utf-8") as f:
    11     data=f.readlines()
    12     print(data[-1].strip())
    13     f.close()
    14 
    15 """
    16 运行结果:
    17     {"name":"山西","population":1800000}
    18 """
    • 当不知道源文件的具体编码方式时,使用"latin-1"可兼容多种编码方式。

    4. 其他文件操作内置函数

    • f.closed():查看文件是否关闭;
    • f.encoding():查看文件操作的编码方式;
    • f.flush():刷新文件内容到硬盘中;
    • f.name():查看操作文件的文件名;
    • f.tell():光标在文件中所在的位置;
    • f.seek(3):将光标移动到指定位置后的第3个字节位置处

             模式0:以文件首字节为起点,移动光标,f.seek(3);

             模式1:以光标当前位置为起点,移动光标,f.seek(3,1);

             模式2:以文件尾字节为起点,移动光标,f.seek(-3,2)。

    • f.truncate(10):截取文件中光标位置位于1-10的字节内容。

         其中,只有函数f.read(3)表示在光标位置处向后读取3个字符,其余的文件内光标移动操作都是以字节为单位的,包括f.seek()和f.tell。

            

  • 相关阅读:
    第四周进度条
    单元测试
    第四周开发日志(psp)
    软件工程个人作业03
    第四周课堂作业——单元测试
    进度条 第三周
    开发日志
    软件工程个人作业2
    《构建之法》阅读笔记01
    第一二周进度条
  • 原文地址:https://www.cnblogs.com/zizaijiapu/p/10651941.html
Copyright © 2011-2022 走看看