Python 标准输入输出 StringIO urllib- 千月的python linux 系统管理指南学习笔记(16)

标准输入输出
import sys
这个概念不难理解,我们在 linux shell 环境下,从键盘输入字符,我们可以看成是标准输入。而系统反馈给你的信息输出在屏幕上,我们看成是标准输出。当然我们还多了一个标准错误,也是输出在屏幕上。除去直接执行脚本不讲,我们和 ipython命令环境 进行的每一次互动,都利用到了标准输入输出。

sys.stdin 标准输入
我们看到引入一个 sys 模块,这个模块提供了上面两种方法。
在工作中,我们主要用 sys.stdin 来做类似管道的工作。也就是 linux shell 下 " | " 的工作。
我们在python命令行界面单独调用 sys.stdin 和 sys.stdout 是毫无意义的,因为你输入 sys.stdin 本身就是标准输入。如果你希望获得交互输入和输出,应该使用 input() 和 print() 来代替。

我们先编写一个 python 脚本,通过循环获得从标准输入进来的每一行输入。
之后在每一行前面加上 " 行号 line: "

sys.stdout 标准输出
正确的用法是我们使用 stdout 或者 stderr (标准错误) 将程序输出的内容重定向到文件中,这在日志信息收集中尤为好用。
同样,标准输出单独调用是没意义的。因为并没有程序对其进行输出。
代码没什么难的,就是中间使用了。stdoutsave 保存了最初 stdout 的环境。后面再读回来,这个步骤这个简单脚本里看起来是多此一举,但是在复杂环境里,还是非常必要的。
从运行结果我们看出来,只输出了 " Output " 而剩下的 print 输出的,都进入了 stdout.log里。
事实上 sys.stdin 和 sys.stdout 的处理方法,可以参照文件对象。类型是一样的。

StringIO的使用
from io import StringIO
我们对文件对象的处理有很多种非常好的方法。像 read readlines writelines 等,但是如果我们遇到的是字符串对象,而不是文件对象,那么这些针对文件对象的方法就没有用武之地了。因此,我们引入了 StringIO 。
StringIO的功能很简单,就是使字符串对象能像文件对象一样进行操作,所以经常被用来当作字符串缓存。
在看例子前,我们先进行一个常见错误的排除。
我们在定义值的时候报错了。这其实是 python 版本上的对应问题。在 python 2.x 的版本下,
应使用。 StringIO(unicode(""))
看例子

一目了然,字符串也可以像文本一样操作,在内存中处理起来一样游刃有余。就是在读值的操作上有点区别。
需要使用 StringIO对象.getvalue() 来获取。

urllib 的使用
import urllib
之前的文件都是在本机中,如果需要读取的文件在互联网上呢?你编写了一个代码,需要复用这段代码,而内建的文件类型不知道互联网,因此就需要引入 urllib 模块
urllib.urlopen() 提供了一个类似 open file 的方法。
之后这个对象就可以像文件对象一样进行读取操作。当然别忘了 close()
上面这个代码,使用 urlopen方法打开了一个网页,并建立了一个对象。
对象可以像文件对象一样使用 read() 读取。
urllib 文件对象支持 read() readline() readlines() fileno() geturl()
这个模块在编写网络爬虫方面很方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值