zoukankan      html  css  js  c++  java
  • python IO编程

    1.IO读写:

      文件读:

        方法一:

    f = open('D:/test.txt', 'r', encoding='GBK', errors='ignore')
    print(f.read())
    f.read(size)#加个读取文件的大小
    f.readline()#按行读取
    f.readlines()#读取全部行
    f.close()#关闭读取文件
    方法二:
    with open('D:/test.txt', 'r') as f:
    f.read()
     文件写:
    with open('D:/test.txt', 'w') as f:#w是写并覆盖,a是追加,两个不能同时用。
    f.write()

     2.在内存中读写,StringIO和BytesIO

        StringIO:

    from io import StringIO
    f = StringIO('hello! world! ')
    while True:
    s = f.readline()
    if s =='':
    break
    print(s.strip())

    f.write('我他娘在这里SB')
    print(f.getvalue())

     运行结果:

    hello!
    world!
    hello!
    world!
    我他娘在这里SB

        BytesIO:

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

    运行结果:

    b'xe4xb8xadxe6x96x87'
    b'xe4xb8xadxe6x96x87'

    3.文件和目录操作:

      #操作系统
    print(os.name)
    #print(os.uname())
    #环境变量
    print(os.environ)#获取环境变量
    print(os.environ.get('PATH'))#获取环境变量PATH
    #操作文件和目录
    print(os.path.abspath('.'))#当前文件绝对路径
    #在某个文件夹下创建一个文件夹
    s=os.path.join('d:/','pytest')
    print(s)
    os.mkdir(s)
    os.rmdir(s)
    print(os.path.split('/Users/michael/testdir/file.txt'))
    print(os.path.splitext('/Users/michael/testdir/file.txt'))
    # 对文件重命名:
    os.rename('test.txt', 'test.py')
    # 删掉文件:
    os.remove('test.py')

    拷贝文件:

    import shutil
    shutil.copyfile()
    #列出当前目录下的所有目录,只需要一行代码:
    print(os.path.isdir('d:/'))
    #要列出所有的.py文件,也只需一行代码:
    print([x for x in os.listdir('.')if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'])



    4.序列化pickling

      方式一:pickle

      pickle.dumps(d)

      pickle.loads(d)

      pickle.dump(d,f)

      pickle.load(f)

      方式二:json进阶,序列化类class和反序列化需要定制化参数

    序列化:

       def student2dict(stu):

          return {

                 'name':stu.name,

                 'age':stu.age

                     }

       json.dumps(s,default=student2dict)

    或偷懒做法:json.dumps(s,default=lambda obj:obj.__dict__)

    反序列化:

       def dict2student(d):

          return Student(d['name'],d['age'])

       json.dumps(s,default=dict2student)

     

     
  • 相关阅读:
    如何一次插入多条记录的SQL语句
    oracle 创建联合主键语句
    02-36 支持向量回归
    245 第三篇:Django-路由控制
    244 第二篇:Django简介
    243 第一篇:自定义Web框架
    242 第一篇:Http协议详细介绍
    02-34 非线性支持向量机(鸢尾花分类)+自定义数据分类
    241 第一篇:web应用
    240 vue学习【第6篇】:vue之导入Bootstrap
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/8810721.html
Copyright © 2011-2022 走看看