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

    9 IO编程

    在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯。

    读文件

             try:

        f = open('/path/to/file', 'r')

        print(f.read())

    finally:

        if f:

            f.close()

     python引入了with语句来自动帮我们调用close()方法:

            with open('/path/to/file', 'r') as f:

        print(f.read())

     要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可

     >>> f = open('/Users/michael/test.jpg', 'rb')

    >>> f.read()

    b'xffxd8xffxe1x00x18Exifx00x00...' # 十六进制表示的字节

    编码不规范 ,忽视错误的写法

     f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')

     f.readline(),f.read(size)固定读取文件大小

     写文件

     ----------

     9.2字符字节  StringIo  BytesIo

     StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口。

     from io import StringIO

    >>> f = StringIO('Hello! Hi! Goodbye!')

    >>> while True:

    ...     s = f.readline()

    ...     if s == '':

    ...         break

    ...     print(s.strip())

     ----------StringIO顾名思义就是在内存中读写str。

     >>> from io import BytesIO

    >>> f = BytesIO()

    >>> f.write('中文'.encode('utf-8'))

    6

    >>> print(f.getvalue())

    b'xe4xb8xadxe6x96x87'

    ###BytesIO实现了在内存中读写bytes,

    -------------

    9.3操作文件和目录

     os.environ.get('PATH')

     os.path.split()函数,这样可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名:

     >>> os.path.split('/Users/michael/testdir/file.txt')

    ('/Users/michael/testdir', 'file.txt')

    要列出所有的.py文件

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

    -----------

    9.4 Python提供了pickle模块来实现序列化。我们把变量从内存中变成可存储或传输的过程称之为序列化

    >>> import pickle

    >>> d = dict(name='Bob', age=20, score=88)

    >>> pickle.dumps(d)

    b'x80x03}qx00(Xx03x00x00x00ageqx01Kx14Xx05x00x00x00scoreqx02KXXx04x00x00x00nameqx03Xx03x00x00x00Bobqx04u.'

    pickle.dump()直接把对象序列化后写入一个file-like Object:

    >>> f = open('dump.txt', 'wb')

    >>> pickle.dump(d, f)

    >>> f.close()

    当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象

    >>> f = open('dump.txt', 'rb')

    >>> d = pickle.load(f)

    >>> f.close()

    >>> d

    {'age': 20, 'score': 88, 'name': 'Bob'}

    json

  • 相关阅读:
    TCP协议
    各相机品牌型号分类
    思科华为命令对比
    网工笔记(一)
    数学笔记
    word快捷键汇总
    请个假
    word笔记
    ScrollView不能到顶部的解决方法
    Gridview 显示成正方形
  • 原文地址:https://www.cnblogs.com/smartwen666/p/7911347.html
Copyright © 2011-2022 走看看