zoukankan      html  css  js  c++  java
  • 08day

    一. 回顾上次课内容
        1. 基础知识点补充
            join() 把一个列表转换成字符串
            split() 切割. 把字符串变成列表
     
            删除问题.
                list和dict
                list删除在循环的时候不能直接删除的
                dict在循环的时候不要改变大小.
     
                需要把要删除的内容保存在一个列表中. 循环这个列表删除老列表
            fromkeys(a, b) 把a中的每一个元素获取到和b组装成一个新字典返回
     
    如果文件操作的时候是图片不需要写encoding
    r+ 不论你读取了多少内容,光标在哪儿,写入的时候都是在结尾写入;最好用的读写同时存在的模式
    w+ 先写后读,少用,直接写会清空文件内容
    a+
    b 非文本格式
    光标的移动
    seek(偏移量,位置)
    seek    3bytes为一个中文;一个中文占3个bytes
    seek(0)  #开头    seek(0,2)  在末尾的偏移量是0  2代表末尾  (0,1)当前位置
    对文件操作流程
     
    1 打开文件,得到文件句柄并赋值给一个变量
    2 通过句柄对文件进行操作
    3 关闭文件
     
    r,只读模式(默认)。
    w,只写模式。【不可读;不存在则创建;存在则删除内容;】,
    若是文件存在,再先清空文件在再进去;open for writing, truncating the file first
    a,追加写模式。【不存在则创建;存在则只追加内容;】open for writing, appending to the end of the file if it exists
     
    "+" 表示可以同时读写某个文件
    r+,可读写文件。【可读;可写;可追加】, 先读然后再追加不然会直接覆盖(用的最多的);若是文件不存在则不会创建文件,可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容,write时会从当前指针下写如数据;
     
    如果我们在open文件后,没有进行任何读写,则从末尾加入
    w+,写读:没什么用)也是先把写的内容加到文件后面(会把原来的文件覆盖掉)
     
    rb 二进制读取文件
     
    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
    rb
    wb
    ab
    for line in f: #这时f为一个迭代器的东西;高效的循环方法
      print(line) #一行行的读,并且内存中只保存一行;效率最高
     
     
    为了避免打开文件后忘记关闭,可以通过管理上下文
    在Python 2.7 后,with又支持同时对多个文件的上下文进行管理
    with open('log1') as obj1, open('log2') as obj2:
    pass-
     
    当with代码块执行完毕时,内部会自动关闭并释放文件资源
     
    for line in f: #这时f为一个迭代器的东西;高效的循环方法
      print(line) #一行行的读,并且内存中只保存一行;效率最高
     
    with open("format_test.py","r+") as fp: #要以这种方式读取整个文件,占用内存最少
        for i in fp:
        print(i)
     
    readline() #读取一行
    __next__() #读取下一行: fp.__next__()
    readlines() #读取所有内容,并返回列表(一行为列表的一个元素值):Read and return a list of lines from the stream:不能这样操作,占用内存太大;一次将内容读取
    write() #写一行数据以unicode Write the unicode string s to the stream and return the number of characters written.
    writelines(list) #写多行,参数为列表,列表中字符串需要换行,不然会写进一行:Write a list of lines to the stream
    seek() #句柄指针操作,到达某个位置,用于移动文件读取指针到指定位置
    tell() #获取当前句柄指针位置;按照字符的个数
    truncate() #截取文件句柄头到当前位置的字符串,返回None;从头开始截断,若有输入,则从指定位置开始截取,即删除
    flush() #强制刷新到硬盘
    seekable()# Return True if the stream supports random access;终端类型文件不可返回
    writeable() #Return True if the stream supports writing
    name #print(fp.name)返回文件
     
    dict.fromkeys('abc',666)                   
     {'a': 666, 'b': 666, 'c': 666}    
     
     
    str的split 方法默认是以空白分割
  • 相关阅读:
    tomcat9.x 集群升级至 tomcat 10.x 发现的问题....
    java8 快速实现List转map 、分组、过滤等操作
    java高亮显示关键字不区分大小写(但不改变原文字母的大小写)---关键字分词功能(自写算法:关键字之间有子集的情况和关键字首尾拼接)
    Java Array、List、Set互相转化
    java 查找list中重复数据
    Java Set对象去重
    Java--如何高效向List中存放不重复的数据(附带时间测试)
    java list的交集,差集,并集
    Java中枚举实现单例模式
    使用jsoup选择器来查找元素
  • 原文地址:https://www.cnblogs.com/pythonwork/p/11493775.html
Copyright © 2011-2022 走看看