zoukankan      html  css  js  c++  java
  • python-day8

    一.文件操作open()文件句柄

      open()打开一个文件,获取的是文件句柄

    1 f = open('hui',mode='r',encoding='utf-8')
    2 # 读取文件中的内容
    3 #f(文件名) 'hui'文件名  mode=模式 encoding='编码格式'
    4 # read(n)  读取n个字符
    5 content = f.read(3)
    6 print(content)
    7 f.close()
    View Code

      read()

      readine()

      readines()

      write

      for line in f : 遍历文件中的内容

      路径的问题:.

        1.绝对路径

          从磁盘根目录寻找

        2.相对路径

          从当前程序运行的文件夹内寻找

     1 # line= f.readline()#读取一行
     2 # print(line.strip())#strip()去掉空白.空格 	 
    
     3 # line = f.readline()#在读取一行
     4 # print(line)
     5 
     6 # lst = f.readlines()#一次性全都读取出来,返回的是列表
     7 # print(lst)
     8 
     9 # 路径的问题
    10 # 两种:
    11 #     1.绝对路径(当文件路径是固定的时候)
    12 #         从磁盘根目录找文件.Windows下用的就是c,d,e,f  linux:   userinxxxx
    13 #     2相对路径(用的多)
    14 #         相对路径对于当前程序所在的文件夹
    15 #         ../表示上一层文件夹
    16 
    17 
    18 # 
      	  转义字符.有固定的含义,推荐用r      \
    19 # f = open(r'文件路径',mode='r',encoding='utf-8')
    20 
    21 # f = open('hui',mode='r',encoding='utf-8')
    22 # while 1:
    23 #     line = f.readline()
    24 #     print(line)
    25 
    26 # *********************
    27 # 文件句柄是一个可迭代对象
    28 f = open('hui',mode='r',encoding='utf-8')
    29 for i in f:#读取文件中的内容,一行一行的读取,每次读取的内容交给前面的变量
    30     print(i.strip())
    View Code

    二.文件操作的相关模式mode

      r:只读

      w:只写,先清空里面的内容,然后再写入

      a:追加

     1 # w 先清空在写
     2 # f = open('new_file',mode='w',encoding='utf-8')#可以帮我们创建文件
     3 # f.write('
    ')
     4 # f.write('太白')
     5 # f.write('很白')
     6 # f.write('特别白')
     7 # f.close()
     8 
     9 # a 添加
    10 # f = open('taihei',mode='r',encoding='utf-8')
    11 # f.write('太黑')
    12 # f.write('很黑
    ')
    13 # f.write('特别黑
    ')
    14 # print(f.read())
    15 # f.close()
    16 
    17 # 文本文件的复制
    18 # f1 = open('文件路径',mode='r',encoding='utf-8')
    19 # f2 = open('新文件路径',mode='w',encoding='utf-8')
    20 # for i in f1:
    21 #     f2.write(i)
    22 # f1.close()
    23 # f2.close()
    View Code

      r+:先读取内容后写,无论你读取多少内容,再次写入的时候都是在末尾

      w+:清空然后再操作

      a+:不论光标在何处写入的时候都是在末尾

     1 #r+
     2 # f = open('文件名',mode='r+',encoding='utf-8')
     3 # content = f.read()
     4 # f.write('123')
     5 # print(content)
     6 
     7 #w+
     8 # f  = open('文件名',mode='w+',encoding='utf-8')#先清空然后再操作
     9 # f.write('123456')
    10 # content = f.read()#写入东西之后,光标在末尾,读取不到内容的
    11 # print(content)
    12 # f.close()
    13 
    14 #a+
    15 f = open('文件名',mode='a+',encoding='utf-8')
    16 f.write('6666666666')
    17 content = f.read()
    18 print(content)
    19 f.close()
    View Code

      非文本文件b-bytes 读取和写入的是字节,用来操作非文本文件(图片,音频,视频)

      rb

      wb

      ab

    1 # 从bytes角度来复制的,适用于所有文件
    2 # f1 = open('图片路径',mode='rb')
    3 # f2 = open('复制到的路径',mode='wb')
    4 # for i in f1:#分批量的读取内容
    5 #     f2.write(i)#出来的结果可以使用read或者write.根据mode来看
    6 # f1.close()#关闭文件
    7 # f2.close()
    View Code

      r+b

      w+b

      a+b  

      +扩展

     

    三.相关操作

      1.seek()移动光标(重点)

        seek(0)开头

        seek(0,2)移动到末尾

      2.tell()获取光标所在的位置

      3.truncate()截断文件

     1 # 光标
     2 # f = open('文件名',mode='r',encoding='utf-8')
     3 # info = f.read(3)
     4 # print(info)
     5 # f.seek(0)#移动光标
     6 # info = f.read(3)
     7 # print(info)
     8 
     9 # seek(参数1,参数2)
    10 # 参数1表示的是偏移量,移动多少个单位
    11 # 参数2表示从什么位置进行偏移
    12 # 0:开头
    13 # 1:当前位置
    14 # 2:末尾
    15 
    16 # 把光标移动到文件的开头:seek(0)
    17 # 把光标移动到末尾:seek(0,2)
    18 # print(f.read(2))#读取2个字符
    19 # f.seek(0)#光标回到开头
    20 # print(f.read(2))#读取2个字符
    21 
    22 # tell()  #程序返回当前光标的位置
    23 # info = f.read(3)
    24 # print(info)
    25 # print(f.tell()) #获取光标位置
    26 
    27 # truncate 截断文件,慎用
    28 
    29 #尽量不要瞎测试,w,w+
    30 # f = open('文件名',mode='r+',encoding='utf-8')
    31 # f.seek(5) #光标移动到5
    32 # f.truncate()#默认从开头截取到光标位置
    33 # f.truncate(3)#从头截取到3
    34 # f.close()
    View Code

    四.文件修改

      with open(xxx) as 句柄,

        open(xxxx) as xxx

      不用手动关闭文件句柄

      文件修改的步骤

        1.从源文件中读取数据

        2.写入到副本文件中

        3.删除源文件

        4.把副本重命名成源文件

      import os

      os.remove()

      os.rename()

     1 # import os#导入系统模块
     2 # import time#导入时间模块
     3 # # 优点: 不用关闭句柄,自动关闭连接
     4 # with open('文件名',mode='r',encoding='utf-8') as f1,
     5 #     open('文件名_副本',mode='w',encoding='utf-8') as f2:
     6 #     for line in f1:
     7 #         line = line.replace('6','8')
     8 #         f2.write(line)
     9 # time.sleep(5)
    10 # os.remove('文件名')#删除源文件
    11 # time.sleep(5)
    12 # os.rename('
    View Code
  • 相关阅读:
    泛型约束where条件的使用(可以通过类型参数动态反射创建实例)
    设计模式之java源码-工厂方法模式
    软件定义网络基础---OF-Config协议
    软件定义网络基础---OpenFlow协议
    软件定义网络基础---南向接口协议概述
    软件定义网络基础---OpenFlow流表
    软件定义网络基础---OpenFlow概述
    软件定义网络基础---SDN数据平面
    软件定义网络基础---SDN的核心思想
    MACVLAN虚拟网卡技术
  • 原文地址:https://www.cnblogs.com/Thui/p/9857151.html
Copyright © 2011-2022 走看看