zoukankan      html  css  js  c++  java
  • python 学习笔记(十二) 文件和序列化


    python 文件读写和序列化学习。
    ## python文件读写
    `1 打开并且读取文件`

    f = open('openfile.txt','r')
    print(f.read())
    f.close()

    `2 打开并且读取一行文件`

    f = open('openfile.txt','r')
    print(f.readline())
    f.close()

    `3 打开并以二进制形式读取文件`

    f = open('./openfile.txt','rb')
    print(f.read())
    f.close()

    `4 打开并自动关闭文件`

    with open('openfile.txt','r') as f:
    print(f.read())

    `5 读取所有行`

    f = open('openfile.txt','r')
    for line in f.readlines():
    print(line.strip())
    f.close()

    `6 以gbk方式读取文件`

    f = open('openfiles.txt','r',encoding='gbk' )
    print(f.read())
    f.close()

    `7 以追加方式写`

    with open('openfile.txt', 'a') as f:
    f.write('
    ')
    f.write('Hello World!!!')

    ## python IO操作
    `1 StringIO 写字符串`

    from io import StringIO
    f = StringIO()
    f.write('hello')
    f.write(' ')
    f.write('world !')
    print(f.getvalue() )

    `2 StringIO 读取字符串`

    from io import StringIO
    f = StringIO("Hello
    World
    GoodBye!!")
    while True:
    s = f.readline()
    if(s==''):
    break
    print(s.strip())
    

      

    `3 BytesIO 读写二进制字符`

    from io import BytesIO
    f = BytesIO()
    f.write('中文'.encode('utf-8') )
    print(f.getvalue())
    
    from io import BytesIO
    f = BytesIO(b'xe4xb8xadxe6x96x87')
    f.read()
    

      

    ## python环境变量和目录

    `1 打印系统的名字和环境变量`

    import os
    print(os.name)
    print(os.environ)

    `2 获取指定key值得环境变量`

    print(os.environ.get('PATH'))

    `3 相对路径转化绝对路径`

    print(os.path.abspath('.'))

    `4 在某个目录下创建一个新的目录`

    #首先把新目录的完整路径表示出来
    print(os.path.join('/Users/michael','testdir') )
    # 然后创建一个目录:
    #print(os.mkdir('/Users/michael/testdir') )
    # 删掉一个目录:
    #print(os.rmdir('/Users/michael/testdir') )

    `5 路径切割`

    print(os.path.split('/path/to/file.txt') )
    print(os.path.splitext('/path/to/file.txt') )

    `6 文件重命名和删除`

    #print(os.rename('test.txt', 'test.py') )
    #print(os.remove('test.py'))

    `7 列举当前目录下所有目录和py文件`

    print([x for x in os.listdir('.') if os.path.isdir(x) ])
    print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'])

    ## python序列化

    `1 序列化为二进制`

    import pickle
    d = dict(name='Bob', age=20, score=88)
    print(pickle.dumps(d))

    `2 序列化写入文件`

    f = open('openfile3.txt','wb')
    print(pickle.dump(d, f) )
    f.close()

    `3 反序列化读取文件`

    f = open('openfile3.txt','rb')
    d = pickle.load(f)
    f.close()
    print(d)

    `4 序列化为json`

    import json
    
    class Student(object):
    def __init__(self, name, age, score):
    self.name = name
    self.age = age
    self.score = score
    
    def convertFunc(std):
    return {'name':std.name,
    'age':std.age,
    'score':std.score}
    
    
    s = Student('Bob', 20, 88)
    print(json.dumps(s,default=convertFunc))
    print(json.dumps(s,default=lambda obj:obj.__dict__))
    

      

    `5 反序列化`

    def revert(std):
    return Student(std['name'], std['age'], std['score'])
    
    json_str = '{"age": 20, "score": 88, "name": "Bob"}'
    print(json.loads(json_str, object_hook=revert ) )
    

      我的微信公众号

     

  • 相关阅读:
    LAMP LNMP 和 LNMPA
    nginx版本如何选择?
    如何看apache的版本号
    CLR Via CSharp读书笔记(12):泛型
    要先怀疑外部代码的错误,再检测是不是自己代码的问题
    redis的那些事
    An Illustrated Guide to SSH Agent Forwarding
    Using sshagent with ssh
    dtach
    [原创]bind DNS IP列表的精确获取
  • 原文地址:https://www.cnblogs.com/secondtonone1/p/7833798.html
Copyright © 2011-2022 走看看