zoukankan      html  css  js  c++  java
  • python学习笔记(五)文件操作和集合

    文件基本操作:

      现有文件file.txt

      

    1 f=open('file.txt','r',encoding='utf-8')#以只读方式打开一个文件,获取文件的句柄,如果是读的话,r可以不写,默认就是只读;文件不存在时,会报错
    2 first_line=f.readline()#获取文件的第一行内容,返回的是一个list
    3 print(first_line)#打印第一行
    4 res=f.read()#获取除了第一行剩下的所有文件内容
    5 print(res)
    6 f.close()#关闭文件
    7 f.read()#读取文件里面所有的内容,返回的是字符串
    8 f.readline()#只读取一行的内容,返回的是字符串
    9 f.readlines()#读取文件里面所有的内容,返回的是一个list #list里每个元素是每行的数据
    10 f.write()#只能写字符串
    11 f.writelines()写可迭代对象

    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄(句柄理解为该文件),后面通过此文件句柄对该文件操作,

    打开文件的模式有:

      r,只读模式(默认)

      w,只写模式。【不可读;不存在则创建;存在则删除以前的内容,然后写入新的内容】

      a,追加模式。【不可读;不存在则创建;存在则只追加内容】

    “+”表示可以同时读写某个文件:

      r+,【可读,可写;可追加,如果打开的文件不存在的话,会报错】

      w+,【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件】

      a+,【追加读写模式,不存在则创建;存在则只追加内容】

     1 f=open('ybq.txt','a+',encoding='utf-8')
     2 f.seek(0)#seek移动指针的时候,只对读好使,对写不好使
     3 print(f.read())#读取文件里面的全部内容
     4 f.write('yunbenking'+'
    ')
     5 f.truncate()#清空文件内容
     6 f.tell()#查看当前文件指针的位置
     7 print(f.readline())#只读取一行的内容
     8 print(f.readlines())#读取文件里面的所有内容,把文件里面每一行的内容放到一个list
     9 for k in f:
    10     print(k)
    11 names=['ybq','mpp','tlx','ply','yjy']
    12 st='ybq,mpp,tlx'
    13 tu=('sdf','sdfs','sdfsd')
    14 f.write(names)#必须是字符串类型
    15 f.writelines(names)#写入的时候,传入一个可迭代对象就行了
    16 f.close()

    高效处理文件:

      

     1 fw=open('ybq.txt')
     2 count=1
     3 #直接循环文件对象的话,就是循环文件里面的每一行
     4 for f in fw:
     5     print('第%s行'%count,f)
     6     count+=1
     7 
     8 for f in fw:
     9     f=f.strip()
    10     stu_lst=f.split(',')
    11     print(stu_lst)

     写入文件的方法:

    方法一:write将list写入文件,write写入字符串

    1 names=['a','b','c']
    2 for name in names:
    3     f.write(name)

    方法二:writelines直接写入,writelines传入可迭代对象,会先循环

    1 names=['a','b','c']
    2 f.writelines(names)
    1 s='dingfei,123456'
    2 f.write(s)#直接写入字符串,所以可以直接写入,效率高
    3 f.writelines(s)#写入可迭代对象,所以先循环字符串,所以效率不高
    1 import time
    2 f=open('hahah','w')
    3 f.write('sdfggg')
    4 f.flush()#立即把缓冲区里面的内容写到磁盘里面,写入的时候需要缓冲区满了才会写到磁盘里
    5 time.sleep(50)

    with的用法:

    1 with open('a.txt','w') as gy:
    2     gy.write('hhh')#自动的当文件不在用时直接关掉
    3 
    4 
    5 
    6 #打开多个文件
    7 with open('a.txt','w') as gy,open('b.txt') as gy2:
    8     gy.write('hhh')
    9     gy2.write('sdfs')

    打开图片样式:

    1 f=open('5.png','rb')#bytes,以二进制模式打开
    2 print(f.read())

    修改文件:将下列歌词中的‘一’全部换成‘二’

        寂寞当然有一点
    
            你不在我身边
    
            总是特别想念你的脸
    
            距离是一份考卷
    
            测量相爱的誓言
    
            最后会不会实现
    
            我们为爱还在学
    
            学沟通的语言
    
            学着谅解
    
            学着不流泪
    
            等到我们学会飞
    
            飞越黑夜和考验
    
            日子就要从孤单里毕业
    
            我们用多一点点的辛苦
    
            来交换多一点点的幸福
    
            就算幸福
    
            还有一段路
    
            等我们学会忍耐和付出
    
            这爱情一定会有张证书
    
            证明
    
            从此不孤独
    
            从此不孤独

    方法一:将文件完全替换后,清空内容,再重新写入

    1 with open('geci','a+',encoding='utf-8') as f:
    2     f.seek(0)
    3     all=f.read()
    4     new_all=all.replace('','')
    5     f.seek(0)
    6     f.truncate()#把文件内容清空
    7     f.write(new_all)
    8     f.flush()

    方法二:

    1 import os
    2 with open('geci','a+',encoding='utf-8') as f,open('geci.bak','w',encoding='utf-8') as f2:#直接打开两个文件
    3     f.seek(0)
    4     for line in f:
    5         new_line=line.replace('','')
    6         f2.write(new_line)#把文件geci里修改的内容写入到文件geci.bak
    7 os.remove('geci')#删除第一个文件
    8 os.rename('geci.bak','geci')#将第二个文件的名字改为第一个

     集合:

      集合也是一种数据类型,一个类似列表的东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据。天生去重!

    集合的作用:

      1.它可以把一个列表中重复的数据去掉,不需要再写判断

      2.可以做关系测试。取交集,并集,差集

    定义集合:

    1 s=set()#定义了一个空的集合
    2 s2={'1','2','3'}#这种方式是直接定义一个集合;如果有冒号是字典,没有冒号就是集合
    3 list=[2,3,1,2,3,4]
    4 s_list=set(list)#这样就定义了一个集合
    5 set1=set([1,3,4,5,6])#这种方式和上面的都是把list转换成一个集合

    集合操作:

     1 list1={1,2,3,4,5,6,9}
     2 list2={2,3,4,6,1}
     3 list3={1,2,3}
     4 print(list1.intersection(list2))# 取交集,也就是取list1和list2中都有的
     5 print(list1&list2)# 取交集,也就是取list1和list2中都有的
     6 print(list1.union(list2))# 取并集,也就是把list1和list2合并了,然后去除重复的
     7 print(list1 | list2)# 取并集
     8 print(list1.difference(list2))#取差集 在list1中存在,在list2中没有的
     9 print(list1 - list2)
    10 list1.add(888)#添加元素
    11 list1.update([777,666,666])#添加元素
    12 list1.remove(777)#删除元素,如果元素不存在会报错
    13 list1.pop()#删除一个随机的元素,并返回删除的元素
    14 list1.discard('dddd')#如果删除的元素存在,删除,不存在不做处理
  • 相关阅读:
    受脑认知和神经科学启发的人工智能
    1分钟爱上管理学
    刻意练习
    课题设计相关
    销售必备心灵鸡汤(转)
    从优秀到卓越
    小记
    何谓成熟?
    三体运动的程序模拟
    行星运动轨迹的程序实现
  • 原文地址:https://www.cnblogs.com/wxcx/p/8169200.html
Copyright © 2011-2022 走看看