首页 > 系统相关 >python 的内存级别的IO操作

python 的内存级别的IO操作

时间:2024-08-21 11:18:25浏览次数:15  
标签:15 StringIO python 16 内存 IO BytesIO Out

可以像操作文件一样 操作内存的buffer

  • StringIO
  • BytesIO

标志位 内存寻址

  • 内存中的对象有一个标志位的概念,往里面写入,标志位后移到下一个空白处。
  • 而读数据的时候是从标志位开始读,所以想要读取前面的数据需要手动将标志位进行移动。

字符串缓冲 需要显示关闭缓冲区

  • 类似java BufferedReader 字符输入流

In [1]: from io import StringIO                                                                                                                                              

In [2]: s=StringIO()                                                                                                                                                         

In [3]: type(s)                                                                                                                                                              
Out[3]: _io.StringIO


In [6]: s.write('this\nis\na\ngreat\nworld!')                                                                                                                                
Out[6]: 22

In [7]: s.read()                                                                                                                                                             
Out[7]: ''


In [11]: s.seek(0)                                                                                                                                                           
Out[11]: 0

In [12]: s.read()                                                                                                                                                            
Out[12]: 'this\nis\na\ngreat\nworld!'

In [13]: s.read()                                                                                                                                                            
Out[13]: ''

In [14]: s.getvalue()                                                                                                                                                        
Out[14]: 'this\nis\na\ngreat\nworld!'

In [15]: s.seek(0)                                                                                                                                                           
Out[15]: 0

In [16]: s.readline()                                                                                                                                                        
Out[16]: 'this\n'

In [17]: s.readline().strip()                                                                                                                                                
Out[17]: 'is'

In [18]: s.seek(0)                                                                                                                                                           
Out[18]: 0

In [19]: s.readlines()                                                                                                                                                       
Out[19]: ['this\n', 'is\n', 'a\n', 'great\n', 'world!']

In [20]: s.close()

字节缓冲 需要显示关闭缓冲区

  • 类似java BufferedInputStream 字节输入流
In [1]: from io import BytesIO                                                                                                                                               

In [2]: b=BytesIO()                                                                                                                                                          

In [3]: b.write('小付'.encode('utf-8'))                                                                                                                                      
Out[3]: 6

In [4]: b.getvalue()                                                                                                                                                         
Out[4]: b'\xe5\xb0\x8f\xe4\xbb\x98'

In [7]: response=requests.get('https://img.zcool.cn/community/0170cb554b9200000001bf723782e6.jpg@1280w_1l_2o_100sh.jpg')                                                     

In [8]: type(response.content)                                                                                                                                               
Out[8]: bytes

In [12]: img=BytesIO(response.content)

In [13]: from PIL import Image                                                                                                                                               

In [14]: pic=Image.open(img)                                                                                                                                                 

In [15]: pic.format                                                                                                                                                          
Out[15]: 'JPEG'

In [16]: pic.size                                                                                                                                                            
Out[16]: (800, 586)

标签:15,StringIO,python,16,内存,IO,BytesIO,Out
From: https://www.cnblogs.com/guanchaoguo/p/18371029

相关文章

  • 零基础学习人工智能—Python—Pytorch学习(六)
    前言本文主要讲神经网络的上半部分。另外,我发现我前面文章写的有歧义的地方还是挺多,虽然,已经改了一部分,但,可能还有没发现的,大家看的时候尽量多理解着看吧。本着目的是学会使用神经网络的开发,至于数学的部分,就能过就过吧。神经网络先学个例子先结合以前的知识理解一个例子,理......
  • Python-终端输出带有颜色的文本
    在Python中,异常信息默认是打印到终端的,而终端显示的文字颜色通常由终端或者是使用的shell决定。如果你想要在try-except块中捕获到异常时,让异常信息以黄色文本的方式显示,你可以使用一些终端控制码(ANSIescapecodes)来改变文本颜色。以下是一个简单的示例,展示了如何在捕获到异常时......
  • 使用sphinx自动提取python中的注释成为接口文档
    写好了代码,交付给他人使用的时候,查看代码固然可以了解各类和函数的功能细节,但接口文档能更方便的查找和说明功能。所以,一价与代码同步的接口文档是很有必要的。sphinx可以根据python中的注释,自动的生成接口文档,这样有利于保证文档和代码功能的同步。让我们来了解如何自动生......
  • python入门基础知识! 新手必备,看完技术突飞猛进!
    基本的类  python最基础、最常用的类主要有int整形,float浮点型,str字符串,list列表,dict字典,set集合,tuple元组等等。int整形、float浮点型一般用于给变量赋值,tuple元组属于不可变对象,对其操作一般也只有遍历。而str字符串,list列表,dict字典,set集合是python里面操作方法较为灵......
  • Python为什么是人工智能领域的首选语言?
      Python作为人工智能领域的首选语言之一,其强大功能和丰富的库支持使得它在这一领域得到了广泛应用。Python人工智能框架主要分为机器学习框架、深度学习框架以及自然语言处理(NLP)库等几大类。以下是这些框架的详细介绍:一、机器学习框架1.Scikit-learn  概述:Scik......
  • cdecl 是 C 语言中的一种调用约定(calling convention),用于指定函数调用时的参数传递和
    cdecl是C语言中的一种调用约定(callingconvention),用于指定函数调用时的参数传递和堆栈清理规则。它定义了函数如何接收参数、如何返回值以及调用方和被调用方如何处理堆栈。了解cdecl调用约定对调用C函数库,尤其是在使用像wimlib这样的库时非常重要。cdecl 调用约定概述......
  • sign_and_send_pubkey: signing failed: agent refused operation
    报错描述ssh连接远程主机时,出现sign_and_send_pubkey:signingfailed:agentrefusedoperation错误,并且还是需要输入密码实验环境Master[root@kvm-master~]#ssh-copy-id-i.ssh/id_rsa.pubroot@kvm-slave/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstal......
  • A 12nm 121-TOPS/W 41.6-TOPS/mm2 All Digital Full Precision SRAM-based Compute-in
    1b*4b的操作是通过4b或非门乘法器完成,然后再通过4b加法器两两相加。但是从真值表上来看,2个4b或非门乘法器加1个4b加法器完成的工作实际上可以通过一个由加法器和两比特IN控制的四选一Mux(或者说LUT)来完成。这样做的话可以直接节省掉21%的功耗。提出的这个并行多位输入结构下(即并......
  • Understanding ODIS Component Protection for VW/Audi Vehicles
    WhatisODISComponentProtection?ComponentProtection(CP)isasecurityfeatureemployedbytheVW-AudiGrouptoensurethatelectroniccomponentsareproperlymatchedtothevehicletheyareassignedto.Thinkofitasanelectroniclockthattiesaco......
  • VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 标准版和厂商定制版,已适配主流品牌服务
    VMwareESXi8.0U3macOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U3标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)定制版、Huawei(华为)OEM定制版请访问原文链接:https://sysi......