IO编程

作者: viean | 来源:发表于2018-05-22 22:20 被阅读0次

读文件

>>> f = open('/mydir/a.txt', 'r')
>>>f.read()  #一次读取文件的所有内容
>>>f.close() #关闭文件句柄
#Python引入了with语句来自动帮我们调用close()方法
with open('/mydir/a.txt' , 'r') as f:
    f.read()

read(size)  #读取size字节内容
readline() 每次读取一行内容
readlines() 一次读取所有行,返回为list
for line in f.readlines():
    print line

字符编码

要读取非ASCII编码的文件,要以二进制模式打开,再解码。

f = open('/Users/a.txt', 'rb')
u = f.read().decode('gbk')
print u

Python还提供了一个codecs模块帮我们在读文件时自动转换编码,直接读出unicode.

import codecs
with codecs.open('/Users/a.txt', 'r', 'gbk') as f:
    f.read() # u'\u6d4b\u8bd5'

写文件

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

使用with语句操作文件IO是个好习惯。

os模块

>>> import os
>>> os.name
'posix'
>>> os.uname()
('Darwin', 'bogon', '17.3.0', 'Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64', 'x86_64')
>>> os.environ
>>> os.getenv('HOME')
'/Users/xxx'
>>> os.path.abspath('.')
'/Users/xxx/PycharmProjects/modualstudy'
>>> os.path.join('/users/viean', 'mynewdir')
'/users/viean/mynewdir'
>>> os.mkdir('./datafiles')
>>> os.rmdir('./datafiles')
>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')

序列化:把变量变成可存储和传输的过程称为序列化;pickling.

反序列化:将变量从序列化后的结果重新读到内存;unpicking.

Python提供两个模块来实现序列化:cPickle和pickle

try:
    import cPickle as pickle
except ImportError:
    import pickle

>>> d = dict(name='Bob', age=20, score=88)
>>> f = open('dump.txt', 'wb')
>>> pickle.dump(d, f)
>>> f.close()

#反序列化
>>> f = open('dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'age': 20, 'score': 88, 'name': 'Bob'}

JSON

>>> import json
>>> d = dict(name='Bob', age=20, score=88)
>>> json.dumps(d)
'{"age": 20, "score": 88, "name": "Bob"}'

>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> json.loads(json_str)
{u'age': 20, u'score': 88, u'name': u'Bob'}

#类也可以转化为了一个JSON对象,此处不详细描述,见https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138683221577998e407bb309542d9b6a68d9276bc3dbe000

相关文章

  • python文件

    IO在计算机编程中指的是输入和输出。IO编程中,Stream(流)是一个很重要的概念。IO有同步IO和异步IO两种...

  • IO编程

    读文件 字符编码 要读取非ASCII编码的文件,要以二进制模式打开,再解码。 Python还提供了一个codecs...

  • IO编程

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

  • IO编程

  • IO编程

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

  • IO编程

    文件读写 写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象...

  • IO编程

    IO在计算机中指Input/Output,也就是输入和输出。 读文件 要以读文件的模式打开一个文件对象,使用Pyt...

  • IO编程

    一、Java网络编程 https://www.runoob.com/java/java-networking.ht...

  • IO编程

    概念 Java流式I/O类都包含在java.io包中。有各种不同的流类来满足不同性质的输入/输出需要。根据流中的数...

  • IO编程

    一、网络编程基础知识 在网络环境上使用IO流进行数据传输 网络编程相关定义和实现,联网的底层细节被隐藏在 Java...

网友评论

      本文标题:IO编程

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