zoukankan      html  css  js  c++  java
  • python基础09_文件操作

    一. 文件操作的基本流程

    #1.打开文件,得到文件句柄并赋值给一个变量
    f1=open('b.txt','r',encoding='utf-8')
    #2.通过句柄对文件进行操作 content=f1.read() print(content)
    #3. 关闭文件**一定要记得加上 f1.close() 

    说明: f1,文件句柄,文件对象.

    open('文件路径'),默认打开方式r,默认打开编码是操作系统的默认编码:windows是gbk编码,linux和mac默认是utf-8

    二.文件编码

    三.文件打开模式

    打开文件的模式有:

    • r , 只读模式,
    • w, 只写模式,【不可读,不存在则创建,存在则删除文件中的内容】
    • a, 追加模式,【不可读,不存在则创建,存在则只追加内容】

    "+" 表示可以同时读写某个文件

    • r+
    • w+
    • a+

    "b"表示处理二进制文件

    • rb
    • wb
    • ab

    四.读取文件的方式

    1.read

    1) read当不传参数的时候,读取所有内容.注意:当文件比较大时,会占用很大的内存,不推荐使用.

    2) 传参,如果是以r方式打开,参数指的是读取多少个字符

    3) 传参,如果是以rb方式打开,传输指的是读取多少个字节.如网络传输图片视频常用rb模式.

    假如有文件a.log,文件内容为

    三月的天气
    四月的天气
    5月的天气
    6月的天气
    7月的天气

    例子1:以r模式打开,read() 会读取文件所有的内容.

    with open("a.log",encoding="utf-8",mode="r") as f:
        content=f.read()
        print(content)
    
    运行结果:
    三月的天气
    四月的天气
    5月的天气
    6月的天气
    7月的天气

    例子2:以r模式打开,read(n),会读取n个字符

    1 with open("a.log",encoding="utf-8",mode="r") as f:
    2     content=f.read(3)
    3     print(content)
    4 
    5 运行结果:
    6 三月的

    例子3:以rb模式打开,read(n)会读取n个字节

    1 with open("a.log",mode="rb") as f:
    2     content=f.read(3)
    3     print(content)
    4 运行结果:
    5 b'xe4xb8x89'

    2.readline

      一行一行读,每次读取一行,不会自动停止

    3.for 循环

      一行一行读,从第一行开始每次读一行,督导没有之后就停止

    4.readlines

    五.写文件

    write: 写内容,参数为字符串

    writelines:写内容,参数为列表list

    需要注意的问题:

    1) w模式打开,写的是字符

    2) wb模式打开,写的是字节

    3) 写的过程中不会自动换行,需要自己添加换行符

    例子:

    1 with open(r"b.log",encoding="utf-8",mode="w") as f:
    2     f.write("假如生活欺骗了你")
    3     f.writelines(["假如生活欺骗了你
    ","不要悲伤,不要心急
    ","忧郁的日子里须要镇静
    ","相信吧,快乐的日子将会来临!
    "])

    写入文件的内容:

    1 题目:假如生活欺骗了你
    2 假如生活欺骗了你
    3 不要悲伤,不要心急
    4 忧郁的日子里须要镇静
    5 相信吧,快乐的日子将会来临!

    六.文件的修改

    python修改文件的步骤

    1)打开原文件,产生文件句柄
    2)创建新文件,产生文件句柄
    3)读取原文件,进行修改,写入新文件
    4)将源文件删除
    5)新文件重命名
    1 import os
    2 with open("b.txt",encoding='utf-8',mode="r") as f1,
    3     open("b.txt_bak",encoding="utf-8",mode="w") as f2:
    4     for i in f1:
    5         new_content=i.replace("china","Chinese")
    6         f2.write(new_content)
    7     os.remove("b.txt")
    8     os.renames("b.txt_bak","b.txt")

    七.文件中的指针

    • seek() : 用来指定当前指针的位置,指的是字节.注意在utf-8编码中,一个汉字占3个字节
    • tell() : 指出当前指针所在的位置

    例子:

     1 with open("a.log",encoding="utf-8",mode="r") as f:
     2     f.seek(3)
     3     content=f.read()
     4     print(content)
     5     print(f.tell())
     6 运行结果:
     7 月的天气
     8 四月的天气
     9 5月的天气
    10 6月的天气
    11 7月的天气
    12 73

    如果把该例子中的seek(3)改为seek(2),运行会报错,原因utf-8编码一个汉字占3个字节,如果把指针调到第2个字节,utf-8解码时会异常





  • 相关阅读:
    【Python】霍兰德人格分析雷达图
    【无线电】摩尔斯电码的快速记忆法
    行业观察(四)| 商超企业降本增效的数据赋能之路
    奇点云三角肌「秀肌肉」,端化目标检测模型再获突破
    奇点云数据中台技术汇(五)| CDP,线下零售顾客运营中台
    业务、数据和组织:阿里巴巴的中台不只是技术战略
    奇点云数据中台技术汇(四)| DataSimba系列之流式计算
    奇点云数据中台技术汇(三)| DataSimba系列之计算引擎篇
    行业观察(三)| 服装零售企业数字化升级要做到「心中有数」
    行在说 | 云+端的整体技术架构才符合企业中台战略需要
  • 原文地址:https://www.cnblogs.com/yimiaoyikan/p/8847394.html
Copyright © 2011-2022 走看看