文件操作三(StringIO,BytesIO)

list1 = []
for i in range(2000):
    list1.append(open('test'))   		 #打开2000个文件对象

!lsof |grep python |wc -l
!ulimit -n #上限是1024
!ps aux|grep python				 		 #找到Python的pid号
!lsof -p 7373 |grep "/web/test/"|wc -l   #统计打开文件个数
for i in list1:
    i.close()  						     #测试完关闭
!ulimit -a  							 #查看上限
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14960
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024   *****这个是文件打开上限*****
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

StringIO

用于文本I / O的内存中流。当调用close()方法时,文本缓冲区将被丢弃。
可以通过提供initial_value来设置缓冲区的初始值。如果启用了换行符,则换行符将按照write()进行编码。流位于缓冲区的开始。
换行符参数,默认设置仅将\n字符视为行的末尾,并且不进行换行。如果换行符设置为None,则在所有平台上将换行符写为\n,但是读取时仍会执行通用换行符解码。

getvalue()

无视指针,输出全部内容
用法示例:

from io import StringIO           
output = StringIO()               
output.write('First line.\n')     
print('Second line.', file=output)
contents = output.getvalue()      
print(contents)                   
output.close() 
打印结果:
First line.
Second line.                   

好处:磁盘操作比内存操作慢.内存足够情况下,优化思路是少落地,减少磁盘IO过程,提供程序运行效率

BytesIO

使用内存中字节缓冲区的流实现。它继承BufferedIOBase。当调用close()方法时,缓冲区将被丢弃。

getbuffer()

对缓冲区的内容返回可读写的视图,而不复制它们。另外,改变视图将透明地更新缓冲区的内容:

b = BytesIO(b"abcdef")
view = b.getbuffer()  
view[2:4] = b"56"     
b.getvalue()          
print(b.getvalue())   
打印结果:
b'ab56ef'

file-like对象

类文件对象,可以像文件对象一样操作
socket对象,输入输出对象(stdin,stdout)都是类文件对象

from sys import stderr,stdout
f = stdout                   
print(type(f))               
print(f.write('666'))        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值