Python实现不写硬盘上传文件的方法有哪些

  大家在工作中,有没有遇到这个问题,那就是在使用python的时候,无法实现不写硬盘上传文件,这样会导致工作效率大大降低。那么,怎么才能够实现python不读写硬盘上传文件呢?下面给大家列举了几种实例,希望能够对大家带来帮助,祝大家在工作中,早日实现财富自由。

  引言

  假如说你写了一个api,并且能够接受client上传的文件,然后在上传到oss,那么这个时候,你会怎么做?先写硬盘,然后在上传到oss?太笨了!

  你写了一个截图服务,截到的图要上传到oss,你会怎么做?先写硬盘,在上传到oss?太笨了!

  那么,这篇文章,就教你怎么去实现上述功能!

  一、文本类型

  使用io.StringIO

io.StringIO
    1、import io

  2、from loguru import logger

  3、file_like_obj=io.StringIO("hahaha")

  4、logger.debug(file_like_obj)

  5、logger.debug(type(file_like_obj))

  6、logger.debug(getattr(file_like_obj,'read'))

  7、logger.debug(file_like_obj.read())

  输出结果如下: 

       2022-07-11 21:23:51.206|DEBUG|__main__::8-<_io.StringIO object at 0x100323eb0>

  2022-07-11 21:23:51.206|DEBUG|__main__::9-

  2022-07-11 21:23:51.206|DEBUG|__main__::10-

  2022-07-11 21:23:51.206|DEBUG|__main__::11-hahaha

  再看一个熟悉的:

       1import io

  2from loguru import logger

  3、file_like_obj=io.StringIO("hahaha")

  4with file_like_obj as f:

  5logger.debug(f.read())

  输出结果如下:

2022-07-11 21:35:04.620|DEBUG|__main__::9-hahaha

  二、二进制类型

  使用io.BytesIO

  使用requests把字符串按照文件上传

  下面的代码是标准的上传文件的代码:

    1import requests

  2import io

  3、response=requests.post('http://localhost:5000/',files={

  'file':open('纵观人类文明史.txt','r',encoding='utf-8')

  })

  4、print(response.text)

  但是我想把open(‘纵观人类文明史.txt’,’r’,encoding=’utf-8′)替换为字符串。为此我想到的办法是把字符串先写到硬盘上,在按照上面的代码上传,可是这太低效率(硬盘太低效率),平白无故多了两次硬盘读写操作,我想直接把内存中的字符串按照文件上传有什么办法吗?

  参考文档

  https://docs.python.org/zh-cn/3/library/io.html#io.StringIO

  以上就是Python实现不写硬盘上传文件的详细内容,更多关于Python不写硬盘上传文件的资料,请继续关注本小编哦

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/4232.html

发表评论

登录后才能评论