zoukankan      html  css  js  c++  java
  • python文件落地

    #文件:长期保存数据信息的集合
    #常用操作open函数
    #第一个参数必须,指明文件路径和文件名
    #第二个参数,打开模式:r 只读、w 只写、x 创建方式打开,如果文件已经存在报错、a 追加、b 二进制方式、t 文本方式打开 、+ 可读写
    
    #with语句:是一种为上下文管理协议的技术
    #自动判断文件的作用域,自动关闭不在使用的文件句柄
    
    with open('text01.txt', 'r', encoding='utf-8') as f:
        #以行读取
        re = f.readline()
        #此结构保证能够读取文件内所有内容
        while re:
            print(re)
            re = f.readline()
    
    with open('text01.txt', 'r', encoding='utf-8') as f:
        #以行读取
        re = f.readlines()
        print(re)
    
    with open('text01.txt', 'r', encoding='utf-8') as f:
        #list能将打开文件作为参数,把文件每一行内容作为一个元素
        l = list(f)
        for line in l:
            print(line)
    
    #read按字符方式读取内容,允许输入参数指定读取范围,默认读取全文
    with open('text01.txt', 'r', encoding='utf-8') as f:
        strChar = f.read()
        print(strChar)
    
    with open('text01.txt', 'r', encoding='utf-8') as f:
        strChar = f.read(1) #每次读取一个
        while strChar:
            print(strChar, end="")
            strChar = f.read(1)
    
    #seek(offset, from) 移动文件读取位置,也叫指针读取
    #from取值:0:从头开始偏移,1:从文件的当前位置开始偏移 2:从文件末尾开始偏移 (移动的单位是字节,一个汉字由若干个字节构成)
    with open('text01.txt', 'r', encoding='utf-8') as f:
        f.seek(6,0) #打开文件指针指向0处,从底6个字节开始读取
        strChar = f.read()
        print(strChar)
    
    import  time
    with open('text01.txt', 'r', encoding='utf-8') as f:
        strChar = f.read(3)  # read读取单位就是字符,可以理解in一个汉字一个字符
        while strChar:
            print(strChar)
            # time.sleep(0.1)
            strChar = f.read(3)
    
    #tell函数用于显示当前文件指针位置
    with open('text01.txt', 'r', encoding='utf-8') as f:
        strChar = f.read(3)  # read读取单位就是字符,可以理解in一个汉字一个字符
        pos = f.tell()  #tell返回单位是字节
        while strChar:
            print(strChar)
            print(pos)
            strChar = f.read(3)
            pos = f.tell()
    
    #write 文件的写操作
    #write(str) 将字符串写入文件
    #writelines(str) 将字符串按行方式写入文件
    #区别:writer只能写入字符串,writelines可以写入以list为参数数据
    # with open('text01.txt', 'a', encoding='utf-8') as f:
    #     f.write('生活不仅有眼前苟且,还有诗和远方')
    #
    # with open('text01.txt', 'a', encoding='utf-8') as f:
    #     l = ['生活不仅有眼前苟且', '还有诗和远方']
    #     f.writelines(l)
    
    #持久化(持久化,落地)--pickle:实现python数据结构二进制序列化和反序列化
    # 序列化:将python数据结构转换为二进制(把程序运行的信息保存到磁盘) pickle.dump
    # 反序列化:把二进制转换为python数据结构(把磁盘数据转换为程序运行的信息) pickle.load
    #file与pickle区别,file只能保存信息文字性信息, pfckle可以保存带有结构化的数据,如一个类实例
    
    import pickle
    with open('text02.txt', 'wb') as f:
        l = ['dd', '11', 'dana', '中文']
        pickle.dump(l, f)
    
    with open('text02.txt', 'rb') as f:
        a = pickle.load(f)
        print(a)
    
    # 持久化-shelve
    # 持久化工具,类似字典,使用kv对保存数据,存取方式也与字典类似
    # open,close
    import shelve
    
    sh = shelve.open('sh.db')
    sh['one'] = {'kk':'2','dd':'33'}
    sh['two'] = ''
    sh['three'] = '3'
    sh.close()
    #通过以上案例发现,shelve不仅能创建.db文件,也可以创建其他格式文件
    
    #shelve读取
    sh = shelve.open('sh.db') #注意一定要保证文件被关闭
    try:
        print(sh['one'])
        print(sh['three'])
    finally:
        sh.close()
    
    # shelve特性
    # 不支持多个应用并行写入,为解决这个问题,open时候可设置flag=r
    # 写回问题,shelve不会等待持久化数据进行任何修改,可使用writeback=True 强制写回
    #shelve也可以使用wiith进行操作,用法与open类似
    sh = shelve.open('sh.db', writeback=True)
    try:
        k = sh['one']
        k['dd'] = 'ieur' #若没有设置writeback=True,关闭时候,k['dd'] = 'ieur' 还在内存中,并没有写入文件
    finally:
        sh.close()
    
    
    sh = shelve.open('sh.db')
    try:
        print(sh['one']['dd'])
    finally:
        sh.close()
    
    with shelve.open('sh.db', writeback=True) as sh:
        print(sh['one'])
  • 相关阅读:
    Docker从12升级到17ce
    镜像清理和删除
    flask-session 在redis中存储session
    linux后台运行python程序 nohup
    flask 自动切换环境
    Linux SSH登录很慢的解决方法
    docker-compose docker启动工具,容器互联
    为什么企业需要IT资产管理
    sql 中取整,四舍五入取整,向下取整,向上取整。
    sqlalchemy 获取表结构。
  • 原文地址:https://www.cnblogs.com/heertong/p/12772814.html
Copyright © 2011-2022 走看看