Python学习笔记--8、IO编程

计算机的Input 和Output ,以及stream data  ,  如果数据从外部(网络等),写入本机磁盘当中的话,这个叫做Input, 而我们发送数据到互联网上去的话,这个叫做OUtput   

但是,话是这么说, 但是cpu的运行的速度远远高于我们数据写入写出的速度,所以,那么I/O 也就有两种方式,同步和异步 , 这个概念很简单,同步就是我在I/O的过过程种,CPU是一直处在一个等待的状态,不能进行其他的程序。 而异步则是不一样了,这个时候,我就告诉你,你把数据给我发出去,然后我就走了干别的事情,如果你干完了的话,再来找我吧。

1、文件读写

(1) 方式一

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

(2)方式二 : With 函数

#这种方式和方式一是一样的,但是我们不需要调用fclose 函数了,这样很方便
with open('/path/to/file', 'r') as f:
    print(f.read())

#同时,如果我们要读的文件突然一下很大, 这个时候我建议使用
read(size) 
#如果我们要读取的是配置文件的话,我们就最好使用readline文件,最方便了呢

for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'删掉

(3) file-like Object  下面有几个概念

二进制文件:

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

字符编码问题:

扫描二维码关注公众号,回复: 2934744 查看本文章
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')

#如何忽略哪些不同的编码错误呢?
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')

写文件:

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



#就像 我们之前说的异步的事情,如果我们步调用fclose 函数的话, 这个时候,我们就会出现数据可能没有写##完的情况,所以为了避免这种情况的发生,我们就采用with的方式的吧
with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')

2、StringIO和BytesIO

很多时候,数据读写不一定是文件,也可以在内存中读写,在内存中读写 

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

print(f.getvalue())

如果 要读取内存当中的数据,这个时候,我们可以写下面的代码对这个数据进行读写的:

f = StringIO('Hello!\nHi!\nGoodbye!')
while True:
  s = f.readline()
  if s == '':
       break
  print(s.strip())

对于BytesIO 这里就不废话了,直接粘贴廖大神的内容:

3、操作文件和目录

import os

os.name 

这个返回的是OS 的名字

(1)环境变量

os.environ  #查看所有的环境变量
os.environ.get('PATH')  #获得具体某个变量的环境变量的值

(2)操作文件和目录

os.path.abspath('.')  #查看绝对路径
os.path.join('/Users/michael', 'testdir')   #创建新的目录
os.mkdir('/Users/michael/testdir')    #删掉一个目录

PS,关于这个地方,现在还是记不住,但是,不过,要还是知道这个模块大体是干嘛用的哇  

4、序列化

我认为,序列化,就看作一种 Ouput必须要进行的一步就好了,而反序列化刚好是相反的过程。 就为了更好的优化整个的传输的过程。

(1)下面我们首先举一个例子的吧:

就像上面所示的样子,我们,dumps 的作用就是将任意对象序列化成为byte  这样的话,我们就可以将它写入文件了。

(2)JSON

json 哈  请参考上面的吧,廖大神的内容。。

猜你喜欢

转载自blog.csdn.net/weixin_42066185/article/details/82051344
今日推荐