• Python学习Day2笔记(集合和文件操作)


    1.集合的使用

       列表是有序的可包含重复内容的 

     集合是无序的不可包含重复内容的

      1) 集合关系测试

    #列表去重
    list_1=[1,4,5,6,7,8,9,7,5,4,23,2] #有重复数据
    list_1=set(list_1)
    print(list_1,type(list_1))

    list_2=set([2,6,0,44,55,3,4])
    print(list_1,list_2)

    #交集
    print(list_1.intersection(list_2))
    print(list_1 & list_2) #不分先后顺序

    #并集
    print(list_1.union(list_2))
    print(list_1 | list_2) #不分先后顺序

    #差集
    print(list_1.difference(list_2)) #1里有2里没有
    print(list_1-list_2)
    print(list_2.difference(list_1)) #2里有1里没有
    print(list_2-list_1)

    #子集
    list_3=set([1,4,6])
    print(list_3.issubset(list_1)) #3是否为1的子集

    #父集
    print(list_1.issuperset(list_3)) #3是否为1的父集

    #对称差集
    print(list_1.symmetric_difference(list_2)) #1 和2里都没有的
    print(list_1 ^ list_2)

    # 没有交集返回True 有交集返回False
    print(list_2.isdisjoint(list_1))

    2)基本操作
    #添加
    list_1.add(999) #单项
    list_1.update([111,112,113]) #多项

    #修改
    list_1.update([2,3,4])

    #删除
    list_1.remove("999") #删除不存在的值会报错
    #随机删除
    list_1.pop()
    #删除 传入一个数字
    list_1.discard(88) #删除不存在的值不会报错

    #长度
    len(list_1)

    #是不是成员
    x in list_1 #列表 字典 字符串判断是不是在变量里都是这样写

    2.文件操作
    1)基本操作

    #读取

    #data=open("TuDiWord.py",encoding="utf-8").read()

    #文件保存为对象
    f=open("TuDiWord.py",encoding="utf-8") #文件句柄
    data=f.read()
    data2=f.read()

    # linux下是按顺序输出的 window下顺序可能会乱
    print(data)
    print(data2)

    #写
    #f.write("丢火车乐队--茶底世界") #提示错误 不能写

    # 写入需要指定打开模式
    #r 为读模式 w为写模式 不写默认为读模式
    f=open("TuDiWord.py","r",encoding="utf-8")
    f.close()

    # w模式打开文件为创建文件 如果以前有同名文件就会覆盖
    f1=open("TuDiWord2.py","w",encoding="utf-8")
    f1.write("生命中最善良的时光, ")
    f1.write("就像是水一样明亮 ")

    #读写都能进行的模式
    #a = append 追加 不覆盖原来的文件
    f1=open("TuDiWord2.py","a",encoding="utf-8")
    f1.write("记忆里总有人坐在身旁, ")
    f1.write("抚摸着我枯萎的肩膀 ")

    #记得关闭
    f1.close()


    f2=open("TuDiWord2.py","r",encoding="utf-8")
    #读一行
    print(f2.readline())
    #读前N行 例如5行
    for i in range(5):
    print(f2.readline())

    #读整个文件
    for line in f2.readlines():
    print(line.strip())

    #读第10行 low的写法 忘记吧
    #readlines 只适合读小文件 读大文件完啦 内存死掉了
    for index,line in enumerate(f2.readlines()):
    if index==9:
    print("我是分割线----------------")
    continue
    print(line.strip())


    #high的写法 内存中只保存一行 效率高
    #获取行号要自己搞个计数器了
    count=0
    for line in f2:
    count+=1
    if count==10:
    print("分割线---------")
    print(line)


    #打印光标位置
    print(f2.tell())

    #tell计数为字符个数 不是行数
    #所以 再输出f2.tell()不是2
    print(f2.read(5))
    print(f2.tell())

    #光标移动位置
    #seek()为回到字符位置
    f2.seek(0)
    print(f2.tell())
    print(f2.readline())
    f2.seek(10)
    print(f2.readline())


    #打印文件编码
    print(f2.encoding)
    #打印文件名
    f2.name

    #异常处理
    f2.errors

    #返回在内存中的编号
    print(f2.fileno())

    #是否为终端设备
    f2.isatty()

    #光标是否可移动
    #atty文件移动不回去
    f2.seekable()

    #文件是否可读
    f2.readable()
    #文件是否可写
    f2.writable()
    #文件是否关闭
    f2.closed()
    #刷新 将内存中的内容写入到硬盘中
    #默认是内存满的时候刷 调用可强制刷新
    f2.flush()
    f2.close()

    #Tips 打印进度条 
    import sys,time

    for i in range(20):
    sys.stdout.write("#")
    # 打印一个刷新一下 否则会20个一起打印出来
    sys.stdout.flush()
    time.sleep(0.1) # 休眠0.1




    f3=open("TuDiWord2.py","a",encoding="utf-8")
    #不写为清空
    f3.truncate()
    #写了数字 截取前10个字符
    f3.truncate(10)

    #无论光标移动到哪都是从头开始截取
    f3.seek(50)
    f3.truncate(100)

    f3.close()

    2)文件内容读写

    #Tips 写读模式是先创建新文件再写内容 可覆盖文件内容 读写模式是可打开原文件在最后追加

    #打开方式 r+ 既可读也可写 读写
    f4=open("TuDiWord2.py","r+",encoding="utf-8")
    f4.readline()
    #添加的话会追加到最后
    f4.write("-------------")
    f4.close()


    #打开方式 w+ 既可读也可写 写读
    f5=open("TuDiWord2.py","w+",encoding="utf-8")
    f5.write("------------1 ")
    f5.write("------------2 ")
    f5.write("------------3 ")
    f5.write("------------4 ")
    print(f5.tell())
    #添加的话会修改光标后的内容
    f5.seek(5)
    f5.write("can i?")
    f5.close()
    #追加读 a+  可读可追加
    f6=open("TuDiWord2.py","a+",encoding="utf-8")
    f6.write("-----------------")
    f6.close()

    #二进制文件 rb
    #不是二进制文件也能读 但会在每行前加 “b”
    #应用场景:网络传输 socket
    f7=open("TuDiWord2.py","rb")
    print(f7.readline())
    f7.close()

    #二进制写
    f8=open("TuDiWord2.py","wb")
    f8.write("jsiagmldrfh".encode()) #字符串转二进制
    f8.close()


    3) 文件内容修改
    #修改文件方法
    #1、把文件内容读取到内存中 修改后再写入到文件中
    #2、打开一个文件修改完再重新写到一个新文件中

    #文件修改实例
    f9=open("TuDiWord.py","r",encoding="utf-8")
    f10=open("TuDiWord2.py","w+",encoding="utf-8")

    for line in f9:
    if "生命中最善良的时光" in line:
    line=line.replace("生命中最善良的时光","我生命中最善良的时光")
    f10.write(line)

    f9.close()
    f10.close()

    # 为避免打开文件后忘记关闭,可通过管理上下文 即:
    with open("TuDiWord.py","r",encoding="utf-8") as f:
    for line in f:
    print(line)
    #如此方式 当with代码块执行完毕时 内部会自动关闭并释放文件资源
    #python2.7之后 可以同时打开 多个文件
    with open("TuDiWord.py","r",encoding="utf-8") as f1,
    open("TuDiWord2.py","r",encoding="utf-8") as f2:
    pass


    3.字符编码
  • 相关阅读:
    IntelliJ idea 2021.3 安装使用及激活
    高项-信息系统基础-UML图
    软考高项(信息系统项目管理师)介绍
    Android Studio中的Gradle面板没有Task任务列表如何找回?
    ubuntu 安装nodejs,npm,
    解决video.js video-player不能自动播放问题
    vuex开启namespaced
    axios提交body raw格式
    vue配置服务代理
    PIDFile没有配置导致将mongodb配置成服务时启动失败
  • 原文地址:https://www.cnblogs.com/LastDance/p/6246900.html
Copyright © 2020-2023  润新知