写了一个 api,接受 client 上传的文件,然后在上传到 oss,你会怎么做?先写硬盘,然后在上传到 oss?太笨了!你写了一个截图服务,截到的图要上传到 oss,你会怎么做?先写硬盘,在上传到 oss?
文本类型
使用 io.StringIO
1
2
3
4
5
6
7
|
import io from loguru import logger file_like_obj = io.StringIO( "hahaha" ) logger.debug(file_like_obj) logger.debug( type (file_like_obj)) logger.debug( getattr (file_like_obj, 'read' )) logger.debug(file_like_obj.read()) |
输出结果如下:
2022-07-11 21:23:51.206 | DEBUG | __main__:<module>:8 – <_io.StringIO object at 0x100323eb0>
2022-07-11 21:23:51.206 | DEBUG | __main__:<module>:9 – <class ‘_io.StringIO’>
2022-07-11 21:23:51.206 | DEBUG | __main__:<module>:10 – <built-in method read of _io.StringIO object at 0x100323eb0>
2022-07-11 21:23:51.206 | DEBUG | __main__:<module>:11 – hahaha
再看一个熟悉的:
1
2
3
4
5
|
import io from loguru import logger file_like_obj = io.StringIO( "hahaha" ) with file_like_obj as f: logger.debug(f.read()) |
输出结果如下:
2022-07-11 21:35:04.620 | DEBUG | __main__:<module>:9 – hahaha
二进制类型
使用 io.BytesIO
使用 requests 把字符串按照文件上传
下面的代码是标准的上传文件的代码:
1
2
3
4
5
6
|
import requests import io response = requests.post( 'http://localhost:5000/' , files = { 'file' : open ( '纵观人类文明史.txt' , 'r' , encoding = 'utf-8' ) }) print (response.text) |
但是我想把 open('纵观人类文明史.txt', 'r', encoding='utf-8')
替换为字符串。为此我想到的办法是把字符串先写到硬盘上,在按照上面的代码上传,可是这太低效率(硬盘太低效率),平白无故多了两次硬盘读写操作,我想直接把内存中的字符串按照文件上传有什么办法吗?
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
友情链接:
6547题库网 |
Scratch从入门到精通|
Copyright © 小码农 |
2020-2022
发表评论