zoukankan      html  css  js  c++  java
  • python之文件操作

    python之文件操作

      一. 初识⽂件操作
      二. 只读(r, rb)
      三. 只写(w, wb)
      四. 追加(a, ab)
      五. r+读写
      六. w+写读
      七. a+写读(追加写读)
      八. 其他操作⽅法
      九. ⽂件的修改以及另⼀种打开⽂件句柄的⽅式⼀.

    一.初识文件操作

      使⽤python来读写文件是非常简单的操作. 我们使用open()函数来打开⼀个⽂件, 获取到⽂件句柄. 然后通过文件句柄就可以进行各种各样的操作了. 根据打开⽅式的不同能够执行的操作也会有相应的差异.

      打开文件的⽅式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使用的是r(只读)模式

    二. 只读操作(r, rb)  

      需要注意encoding表示编码集. 根据⽂件的实际保存编码进行获取数据, 对于我们⽽⾔. 更多的是utf-8.

      rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.

      rb的作用: 在读取非⽂本⽂件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要用到rb. 因为这种数据是没办法直接显示出来的. 还有,我们看的直播. 实际上都是这种数据.

        绝对路路径和相对路路径:

          1. 绝对路径:从磁盘根目录开始⼀直到⽂件名.

          2. 相对路径:同⼀个⽂件夹下的⽂件.

        相对于当前这个程序所在的⽂件夹⽽言. 如果在同⼀个⽂件夹中. 则相对路径就是这个⽂件名. 如果在上一层⽂件夹. 则要../我们更推荐大家使用相对路路径. 因为在我们把程序拷贝给别人使⽤的时候. 直接把项目拷贝走就能运行. 但是如果⽤绝对路路径. 那还需要拷⻉外部的文件.

    读取文件的方法:
      1. read() 将文件中的内容全部读取出来. 弊端: 占内存. 如果文件过大.容易导致内存崩溃

      2. read(n) 读取n个字符. 需要注意的是. 如果再次读取. 那么会在当前位置继续去读而不是从头读, 如果使用的是rb模式. 则读取出来的是n个字节

      3. readline() 一次读取一行数据, 注意: readline()结尾, 注意每次读取出来的数据都会有一个 所以呢. 需要我们使用strip()⽅法来去掉 或者空格

      4. readlines()将每一行形成一个元素, 放到一个列表中. 将所有的内容都读取出来. 所以也是,容易出现内存崩溃的问题.不推荐使用

      5. 循环读取. 这种⽅式是组好的. 每次读取一行内容.不会产⽣内存溢出的问题.

    注意: 读取完的文件句柄⼀定要关闭 f.close()

    三. 写模式(w, wb)  

      写模式(w, wb) 写的时候注意. 如果没有⽂件. 则会创建⽂件, 如果⽂件存在. 则将原件中原来的内容删除, 再写入新内容wb模式下. 可以不指定打开⽂件的编码. 但是在写文件的时候必须将字符串转化成utf-8的bytes数据.

    四. 追加(a, ab)
      在追加模式下. 我们写入的内容会追加在文件的结尾.

    五. 读写模式(r+, r+b)

      对于读写模式. 必须是先读. 因为默认光标是在开头的. 准备读取的. 当读完了之后再进⾏写入. 我们以后使用频率最高的模式就是r+

    注意:r+模式下. 必须是先读取. 然后再写入

    六. 写读(w+, w+b)
      先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用.  

      有人会说. 先读不就好了么? 错. w+ 模式下, 一开始读取不到数据. 然后写的时候再将原来的内容清空. 所以, 很少用.

    七. 追加读(a+)
      a+模式下, 不论先读还是后读. 都是读取不到数据的还有⼀些其他的带b的操作. 就不多赘述了了. 就是把字符换成字节. 仅此⽽而已

    八. 其他相关操作

      1. seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中文部分要是3的倍数.  

      通常我们使用seek都是移动到开头或者结尾.  

      移动到开头: seek(0)  

      移动到结尾: seek(0,2) seek的第⼆个参数表示的是从哪个位置进行偏移, 默认是0, 表示开头, 1表示当前位置, 2表示结尾

      2. tell() 使用tell()可以帮我们获取到当前光标在什么位置

      3. truncate() 截断⽂件

    注意: 在r+模式下. 如果读取内容. 不论读取内容多少. 光标显示的是多少. 再写入或者操作文件的时候都是在结尾进行的操作.所以如果想做截断操作. 记住了. 要先挪动光标. 挪动到你想要截断的位置. 然后再进行截断关于truncate(n), 如果给出了n. 则从开头开头进行截断, 如果不给n, 则从当前位置截断. 后⾯的内容将会被删除

    九. 修改文件以及另一种打开文件的⽅式

      文件修改: 只能将文件中的内容读取到内存中, 将信息修改完毕, 然后将源文件删除, 将新文件的名字改成老文件的名字.

      弊端: ⼀次将所有内容进行读取. 内存溢出. 解决⽅案: 一⾏⼀行的读取和操作

  • 相关阅读:
    75. Sort Colors
    101. Symmetric Tree
    121. Best Time to Buy and Sell Stock
    136. Single Number
    104. Maximum Depth of Binary Tree
    70. Climbing Stairs
    64. Minimum Path Sum
    62. Unique Paths
    css知识点3
    css知识点2
  • 原文地址:https://www.cnblogs.com/l1222514/p/10073368.html
Copyright © 2011-2022 走看看