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

    文件操作

      1.文件路径:例如:d:******(绝对路径);'文件名'(相对路径在同文件夹下直接打开)
      2.编码方式:例如:utf-8,gbk.....
      3.操作方式:例如:只读,只写,追加,读写,写读.....
    open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True);#open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写

    打开文件简单三部:(只读)
      1.'对象(例如f)'=open('文件路径',mode='',encoding=''(二进制写入或读放到操作中))#'对象及变量'
      2.'变量(例如k)'=f.read();
      3.print('k'),f.close()。

    高级打开:

      with open('文件路径',mode='',encoding='')#'对象及变量'as'对象'(可以多开不需要手动关闭):

    Ps:

    如果要读原文件使用 for i in 循环读

    补充 with 其他:

      with obj对象
      __enter__(self) # 实际是走对象中的 __enter__方法 进入后
      执行 with obj: 后其他内容
      __exit__(self,exc_type,exc_val,exc_tb) # 最后走__exit__退出


     

    模式详解

    模式       描述
    r        ***以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

    rb        ***以二进制格式(bytes)打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

    r+        ***打开一个文件用于读写。文件指针将会放在文件的开头。

    rb+         ***以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

    w         ***打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    wb       ***以二进制格式(bytes)打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。(f.write('内容').encode('你写文件的编码方式')只有在二进制mode下需要写,open中不需要写encoding)

    w+       ***打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    wb+       以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

    a        ***打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    ab        ***以二进制格式(bytes)打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    a+       打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

    ab+       以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

     


    属性详解

    属性(这里的file值得是句柄)         描述
    file.closed                返回true如果文件已被关闭,否则返回false。

    file.mode                  返回被打开文件的访问模式。

    file.name                  返回文件的名称。

    file.softspace                如果用print输出后,必须跟一个空格符,则返回false。否则返回true;

    *****file.seek()               ********调光标;是按照字节去定光标的位置(可以选择光标字节);
    # seek(0,0) 开头 seek(0,1) 当前位置 seek(0,2) 移动到末尾 # 0索引代表移动位置,1索引代表行状态

    *****file.read()              ********读文件内容,读出来的都是字符;(可以选择阅读符);****"一次性读*"

    *****file.readable()            ********判断文件是否可读;

    *****file.readline()             ********一行一行读;*****"不知道在哪结束;bytes按照字节读没有行的概念"

    *****file.readlines()             ********每一行当成列表中的一个元素,然后添加到list中,可以使用循环打印出来;****"一次性读*"

    *****file.write()               ********写文件;

    *****file.writeable()             ********判断文件是否可写;

    ******for循环读              ********for i in file()

    *****file.truncate()             ********用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除.

    *****file.tell()                 ********查找到光标目前的位置;

    *****file.close()             ********关闭文件;

    *****file.flush()             ********强制保存;


    补充: 关于修改文件的方法


      读一个,写一个,删除,重命名(两个文件替换)
      import os
      os.remove('文件名') 删除文件
      os.rename('文件名','新文件名') 重命名文件


    深浅拷贝

      " = " 栈空间的内存地址的赋值
      浅拷贝: 只拷贝第一层内容
      # 一定会创建一个对象,内部构造和原来的对象一模一样,原来的对象中的内存指向和新对象的指向是一致的

      深拷贝: 全部复制一份
      # 一定会创建一个对象,内部构造和原来的一样,但是地址的指向不一样

    Songzhibin
  • 相关阅读:
    MM1排队系统
    java基本概念
    将博客搬至CSDN
    数据库知识点1
    离散分布
    概率论1--基本概念
    一道经典JS题(关于this)
    ajax请求过程中下载文件在火狐下的兼容问题
    熟悉css/css3颜色属性
    打字机游戏Ⅱ之手速pk
  • 原文地址:https://www.cnblogs.com/binHome/p/11772442.html
Copyright © 2011-2022 走看看