python文件操作基础

本周内容:

  • 1. day02 文件处理

    • 1.1 文件处理的基本步骤

    • 1.2 with语法

    • 1.3 文件打开模式

      • 1.3.1 控制文件读写操作的模式

      • 1.3.2 控制文件读写内容的模式

      • 1.3.3 文件操作的方法

      • 1.3.4 控制文件指针移动

      • 1.3.5 文件修改的两种方式

  • 2. day03 函数及模块

今日内容详细

1. day02 文件处理

  • 1.1 文件处理的基本步骤

    '''
    概念:
    '''
    
    '''什么是文件'''
    文件是操作系统提供给用户或者说应用程序操作硬盘的一种功能
    
    '''为何要用文件'''
    读写文件就是在读写硬盘:我们对文件的读写操作都会被操作系统转换成硬盘的读写操作
    个人理解:
    		为了便于利用操作系统实现我们对硬盘的读写
     应用程序------------->>>>
     操作系统------------->>>>文件
        硬件------------->>>> 硬盘
    '''如何使用文件'''
    1. 打开文件
       open(r'文件路径', mode='读/写模式',encoding='文件编码')
       open()的作用:
    			  1). 打开文件,映射硬盘空间
        		  2). 返回文件句柄/文件对象或可以说是返回一个值(占用内存空间)
    2. 读/写文件
       .read()
       .write()
       调用系统资源,进行文件读写
    3. 关闭文件
       .close()	
        close()释放操作系统中被调用的空间资源
    
    例:
    	f = open(r'a.txt','rt', encoding='utf-8')
        print(f)      # 这里的f就是一个盛装读取到文件内容的对象容器
        res = f.read() # 该对象可以调用文件的一些内置方法
        print(res)
        f.close()     # 结束对操作系统资源、空间的调用
    PS:
    	1). 文件对象:是对这个文件的一些状态、属性的封装,例如读取到的文件位置等。
             文件句柄(Windows中概念),文件描述符(linux中概念):
             用来定位打开的文件在内存中的位置
        2). with open() as 变量名/对象名: 程序结束后,自动释放操作系统资源空间  
    
  • 1.2 with语法

    with open() as 变量名/对象名: 程序结束后,自动释放操作系统资源空间 
    							不用再输入.close()关闭文件
    
  • 1.3 文件打开模式

    • 1.3.1 控制文件读写操作的模式

      r(默认)        只读
      只读模式,如果文件不存在则报错,文件存在则文件指针处于文件开头
      w			 只写
      只写模式,如果文件不存在则创建空文档,文件存在则清空,文件指针处于文件开头
      文件被打开后,不关的情况下连续运行程序,新写的内容永远跟在后面。
      a			 追加
      只追加写模式
      与w模式相同的是:如果文件不存在则创建空文档,文件存在不会清空,打开的文件不关的情况下,可以连续的'write'写入,文件指针处于文件末尾;
      不同的是:文件关闭然后重新打开的情况下,依旧写在后面
      
      
    • 1.3.2 控制文件读写内容的模式

      t (默认)				读写都是以字符串为单位的,只适用于文本文件,必须指定encoding参数
      b					 读写都是以bytes为单位,适用于所有文件,一定不能指定encoding参数
      
      
      	例一:文件的拷贝功能
           	  with open('1.mp4', 'rb') as f1, open(r'd:\11.mp4', 'wb') as f2:
              		res = f1.read()
              		f2.write(res)
          
          例二:
          	  with open('a.txt', 'rt', encoding='utf8') as f:
              		f.read()
              		for line in f:
                  		print(line, end='')
                          
                 #  用for 循环实现非连续性读写输出,适用于文件内容过大         
                 with open('1.mp4', 'rb') as f:    
                  	for line in f:
                          print(line)
                          
          组合实现文件拷贝:
          with open ('1.mp4','rb') as f1, open(r'11.mp4','wb') as f2:
              for line in f1:
                  f2.write(line)
                  
      扩展内容:
      		可读可写
          	读写模式(t默认省略,为读写文本文件):
              		r+
                  	w+
                      a+
               读写模式(b,读写字节文件):
              	    r+b
                  	w+b
                      a+b
      
    • 1.3.3 文件操作的内置方法

      1).读的内置方法: 
          .read()
          .readline()
          .readlines()
          
      	.read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,
          也就是说 .read() 生成文件内容是一个字符串类型。
          
          特点是:读取整个文件,将文件内容放到一个字符串变量中。
        劣势是:如果文件非常大,尤其是大于内存时,无法使用read()方法。
          
      	.readline()每只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中
          ,返回str类型。
          
          特点:readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存
        缺点:比readlines慢得多
      
      	.readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,
          返回list类型。
          
          特点:一次性读取整个文件;自动将文件内容分析成一个行的列表。
      
      
      2).写的内置方法:
      	file.write(str)
          file.writelines(sequence)
          
          file.write(str)需要传入一个字符串做为参数,否则会报错。
          返回的是写入的字符长度。
          
          file.writelines(sequence)可以有两种:字符串和字符序列,传入字符序列时,
          如果需要换行,则每个序列元素末尾需要有“\n”换行符才能达到所要输出的格式要求。
      
        注意 :writelines必须传入的是字符序列,不能是数字序列
      
        writelines( "字符串" ) writelines( "字符序列" )
      
    • 1.3.4 控制文件指针移动

      '''
      大前提:
      	  只有t模式下的 f.read(n)中的n代表的是字符个数,
      	  除此之外,关于指针的移动,单位都是字节bytes
      PS:
      	a、a+ 读写完文件后,指针会停留在末尾
      	r、r+、w、w+ 等的操作完成后,指针都会停留子文件首部
      '''
      指针控制方法:
      	file.read(n)        代表读取的字符个数,如截取的是中文,而又不足'n'的要求,则会出现乱码
          以下则显示的是字节个数
          file.truncate()     # 截断模式
          file.seek()  
          	file.seek(字节个数, 0)    指针指向文件头
              file.seek(字节个数, 1)	  指针指向当前
              file.seek(字节个数, 2)	  指针指向末尾
          模式控制:
          0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
          1: 该模式代表指针移动的字节数是以当前所在的位置为参照的1
          2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
          强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
              
          f.tell()查看文件指针当前距离文件开头的位置
      
    • 1.3.5 文件修改的两种方式

      未讲到
      
posted @ 2021-06-08 18:22  陈皮是味药  阅读(58)  评论(0)    收藏  举报