美文网首页
Python IO编程

Python IO编程

作者: carolwhite | 来源:发表于2017-08-21 22:28 被阅读19次

文件读写

  • 读文件
    由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:
try:
    f = open('/path/to/file', 'r')   #二进制文件用'rb',特定字符编码encoding='gbk',忽略错误errors='ignore'
    print(f.read())
finally:
    if f:
        f.close()

可以用以下方法简写

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

调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。

  • 写文件
>>> f = open('/Users/michael/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()

简写

with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')

操作文件或目录

# 查看当前目录的绝对路径:
>>> os.path.abspath('.')
'/Users/michael'
# 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来: ,这是因为windows和linux路径结构不一样
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# 然后创建一个目录:
>>> os.mkdir('/Users/michael/testdir')
# 删掉一个目录:
>>> os.rmdir('/Users/michael/testdir')
# 拆分路径
>>> os.path.split('/Users/michael/testdir/file.txt')
('/Users/michael/testdir', 'file.txt')
# 获得文件扩展名
>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
# 对文件重命名:
>>> os.rename('test.txt', 'test.py')
# 删掉文件:
>>> os.remove('test.py')
#复制在shutil模块的copyfile()函数
# 过滤文件
>>> [x for x in os.listdir('.') if os.path.isdir(x)]
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Applications', 'Desktop', ...]

序列化

  • Json
import json

class Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

s = Student('Bob', 20, 88)

#序列
print(json.dumps(s, default=lambda obj: obj.__dict__))
  • 反序列
    如果我们要把JSON反序列化为一个Student对象实例,loads()方法首先转换出一个dict对象,然后,我们传入的object_hook函数负责把dict转换为Student实例:
def dict2student(d):
    return Student(d['name'], d['age'], d['score'])


>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> print(json.loads(json_str, object_hook=dict2student))
<__main__.Student object at 0x10cd3c190>

相关文章

  • Python IO编程

    1. 打开文件 f = open(filename,mode) 'r','r+'模式下,文件必须存在,否则报错。而...

  • Python IO编程

    一、文件读写 读 写 二、StringIO和BytestIO StringIO和BytesIO是在内存中操作str...

  • Python IO编程

    文件读写 读文件由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了...

  • Python:IO编程

    同步IO与异步IO:由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个...

  • Python IO编程

    IO在计算机中指Input/Output,也就是输入和输出 同步和异步的区别就在于是否等待IO执行的结果。 文件读...

  • Python IO编程

    IO 在编程语言中特指输入和输出「即 input 和 output」。在 IO 编程中 stream (流)是一个...

  • python io 编程

    文件读写 读取文件 写文件 延展,非UTF-8编码的文本文件读写需要: 所有模式的定义及含义可以参考Python的...

  • Python IO编程

    IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的...

  • Python 流

    Python IO编程[https://cloud.tencent.com/developer/article/1...

  • Python 异步IO - asyncio

    python 异步IO 本文为个人学习python asyncio模块的内容,可以看为python异步编程的入门。...

网友评论

      本文标题:Python IO编程

      本文链接:https://www.haomeiwen.com/subject/twchdxtx.html