python学习day9笔记

Posted 麋鹿的麋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习day9笔记相关的知识,希望对你有一定的参考价值。

本日内容概括

  • 文件处理:

    文件处理的基本步骤
    
    	with语法
        	自动执行f.close代码
        
    	文件打开模式
    		控制文件读写操作的模式
    			r  只读
    			w  只写
    			a  追加
    
    		控制文件读写内容的模式
    			t
    			b
    
    文件操作的方法
    
    	控制文件指针移动
    	文件修改的两种方式
    

本日内容详细

  • 什么是文件

    文件是操作系统提供给用户或者说应用程序操作硬盘的一种功能
    
  • 为何要用文件

    读写文件就是在读写硬盘:我们对文件的读写操作都会被操作系统转换成硬盘的读写
    
  • 如何用文件

    f = open(r\'a.txt\',mode = \'rt\',encoding = \'utf-8\')  # f 是 文件对象 文件句柄
    # 文件对象:既有功能又有数据
    # f 控制操作系统 打开硬盘内的a.txt 之后f打开的这个内容就存在应用程序里了
    f.close()
    # f 控制操作系统 关闭a.txt文件 f就失去打开的内容 两者失去连接
    应用程序 -> 操作系统 -> 硬盘
    
  • 文件打开模式

    1.控制文件读写操作的模式
      
      r模式:只读模式,如果文件不存在则报错,文件存在则文件指针处于文件开头
      w模式:只写模式,如果文件不存在则创建空文档,文件存在则清空,文件指针处于开头
      	  在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面
      	  换行在内容后面加\\n
      a模式:只追加写模式,在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面
      	  在打开了文件关闭然后重新打开的情况下,a模式永远写在后面
      	  
      可读可写模式(不建议),例如:mode = (r+t)  
      # mode(读写操作模式+读写内容模式)  中间加个+号
      具有读写操作模式的特性,例如w模式打开文件文件会清空
      
      2.控制文件读写内容的模式
      t模式:读写都是以字符串为单位的,只适用于文本文件,必须指定encoding参数
      	  直接输出字符串
      b模式:读写都是以bytes为单位的,一定不能指定encoding参数
      	  直接原始输出
      \'\'\'
      f = open(r\'a.txt\',mode = \'rt\',encoding = \'utf-8\')
      mode只写r,默认输出rt模式
      
      f.write(\'  \'.encode(\'utf-8\'))  # b模式输入字符串
      
      print(f.read())
      print(\'123456\')
      print(f.read())  # 文件指针到末尾,读不出来
      
      f.readable  # 判断是否可读,返回布尔值
      f.writeable  # 判断是否可写,返回布尔值
      
      # 文件拷贝功能
      # 方案1
      with open(\'1.mp4\',mode=\'rb\')as f1,open(r\'D:\\123.mp4\',mode=\'wb\') as f2:
          res = f1.read()
          f2.write(res)
          
      # 方案2
      with open(\'a.txt\',mode\'rt\',encoding(\'utf-8\')) as f1:
          for line in f1:
              f2.write(line)
    
  • 文件操作的其他方法

    1.读取文件,从头到尾,输出列表
    	f.readlines()
    
    2.读取文件,一次读一行
    	f.readline()
        
    3.输入列表,与readlines对应,类似用for循环一个一个输出列表内容
    	f.writelines([\'111\\n\',\'222\\n\'])
        
    4.短时间内多次操作会将多次操作存到一起一次性进行
      使用flush(刷新)会直接将存储的操作进行
    	f.flush()
    
  • 控制文件指针移动

    \'\'\'
    大前提:只有t模式下的f.read(n)中的n代表的是字符个数
    	   除此之外,关于指针的移动,单位都是字节bytes
    \'\'\'
    
    1.截断文件,保留你所在指针往前或往后n个字节,其余删除
    	with open(\'a.txt\',mode\'r+t\',encoding(\'utf-8\')) an f:
            f.truncate(n)
    2.
    	f.seek(字节个数,0)
    	f.seek(字节个数,1)0....
    	f.seek(字节个数,2)
    

以上是关于python学习day9笔记的主要内容,如果未能解决你的问题,请参考以下文章

day9-Python学习笔记(二十一)单元测试

day9-Python学习笔记(二十二)多线程,多进程

Python100天学习笔记Day9 面向对象进阶

Python100天学习笔记Day9 面向对象进阶

学习笔记:python3,代码片段(2017)

DAY9-字符串笔记整理2018-1-19