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。

            

  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/zizaijiapu/p/10651941.html
Copyright © 2011-2022 走看看