• python基础三(集合、文件)


    1、集合定义

    集合天生能去重,且与字典一样,无序。集合用大括号括起来,里面的元素之间用逗号分隔,要跟字典区分开。

    集合定义方法:s=set() #定义一个空集合

    s={'1','a','b','c','d','e','f'}#直接定义一个集合

    s=set('123dfdreerewrewr')#将一个字符串转化为集合

    s=set(['a','b','c','d'])#将一个list转化为集合

    2、交集、并集、差集

    取交集:& 或者intersection

    print(s1 & s2) #取交集
    print(s1.intersection(s2)) #取交集

    取并集:| 或者union

    print(s1|s2)

    print(s1.union(s2))

    取差集

    print(s1-s2)#取差集,s1中去掉s2重复的部分

    print(s1.difference(s2))#

    对称差集

    print(s1^s2)#去掉两个集合的交集,剩下的

    print(a.symmetric_difference(b))

    3、集合操作:增删改查

    s.add('ss') #加元素
    s.pop()#随机删一个
    s.remove('ss')#指定删除哪个
    s.update({1,2,3}) #把另外一个集合加进去
    s.isdisjoint(s5)#如果没有交集的话返回true

    4、文件操作

     1、文件打开open

    f=open(‘文件名’,''打开方式,'字符编码')

    例:f = open('names','a+',encoding='utf-8'),python默认是gbk编码,open打开文件,如果不写打开方式,默认是r只读方式

    文件打开有三种模式:读模式r,写模式w,追加模式a,另还有三种附加模式,加上"+" 表示可以同时读写某个文件

      r,只读模式(默认)。

     w,只写模式。不可读;不存在则创建;存在则删除内容;

     a,追加模式。不可读; 不存在则创建;存在则只追加内容;
     r+,可读、可写;可追加,如果打开的文件不存在的话,会报错
     w+,写读模式,不存在则创建。,已经存在的文件内容会被清空,可以读到已经写的文件内容
     a+,追加读写模式,不存在则创建;存在则只追加内容;

    #只要沾上了r,文件不存在的就会报错
    #只要沾上了w,都会清空原来的内容

     2、读取文件

    f.read()#读文件,会将文件内容一次性全部读取出来

    f.readline()#逐行读取,每次读一行,读取后文件句柄自动移到下一行,每次读取的内容都是一个字符串,如果有换行符,可以用字符串的strip方法;strip(' ')

    f.readlines()#将文件所有内容按行放到list中,每个元素后都会自动加上 .例:['1212sf ', 'sdfdsffdfdfd ', '33434312121212121223']

    f.seek(0)#句柄移动到文件最开始0位置,括号里填几,句柄就移动到第几个字符

    f.tell()#记录指针的位置,可以和seek联合使用

    比如:操作一会文件后用point=f.tell  保存文件当前位置,然后下次再次才做,可以用f.seek(point)将指针定位到上一次的位置,接着上一次的位置继续

    注意:seek()可以移动指针,但是只限于读管用,如果文件是以a+的模式打开的,即便seek(0)指针移动到最开始位置,在写文件内容时,还是会在最后面写
    例子:
    # 文件指针:
    # 用来记录文件到底读到哪里了
    f = open('name','a+',encoding='utf-8')# a模式的文件指针是在末尾的
    f.write('呵呵呵')#如果写的内容要换行显示,可以加上'
    ' :f.write('dfdf'+'
    '),读取文件时去掉
    可以用字符串的strip('
    ')
    f.seek(0)  #移动文件指针到最前面
    f.write('seek操作后,写的内容')   #移动完文件指针之后,是只能读,写的时候还是在文件末尾写,此时也就是指针自动又到了末尾
    print(f.read())#这时是读不出来内容的,因为指针在最后。如果没有上一行的f.write().则会读取文件的完整内容
    
    

     循环读取文件,也可用for line in file,此时返回的是file的每一行,格式是字符串。可对line用字符串的相关函数继续操作。读完一行会释放一行的内存。

     文件读写判断:

      f.readable()#判断文件是否可读

      fr.writable()#判断文件是否可写

     3、关闭文件

         f.close() 每次用open打开文件后,文件是不会自动关闭的,需要手动close下。这样有时候会忘记关闭,占内存。

        with open('geci','a+') as f:#打开文件,文件不用时自动关闭

      4、写文件

       f.write();#往文件写内容

       f.writelines(['111','222'])#往文件写多个内容,比如list,元祖,集合等

    5、random模块

    使用random模块必须先引入import random

       print(random.randint(1,9999))#获取随机的1-9999之间的数字

    random.shuffle(list)#打乱list的顺序,只能用于list
  • 相关阅读:
    如何判定某个类的职责是否够"单一"?
    Guava中的Cache简易源码分析
    为什么尽量少用继承?
    聊聊抽象类和接口
    WINDOW 搭建 ELK 2.4.0
    摇摇棒,理工男的择偶权(上)
    C++值多态:传统多态与类型擦除之间
    C++值元编程
    STM32学习笔记——printf
    C++98/11/17表达式类别
  • 原文地址:https://www.cnblogs.com/bendouyao/p/8708019.html
Copyright © 2020-2023  润新知