Python實(shí)現(xiàn)不寫硬盤上傳文件
引言
你寫了一個 api,接受 client 上傳的文件,然后在上傳到 oss,你會怎么做?先寫硬盤,然后在上傳到 oss?太笨了!
你寫了一個截圖服務(wù),截到的圖要上傳到 oss,你會怎么做?先寫硬盤,在上傳到 oss?太笨了!
這篇文章教你重新做人!
文本類型
使用 io.StringIO
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())輸出結(jié)果如下:
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
再看一個熟悉的:
import io
from loguru import logger
file_like_obj = io.StringIO("hahaha")
with file_like_obj as f:
logger.debug(f.read())輸出結(jié)果如下:
2022-07-11 21:35:04.620 | DEBUG | __main__:<module>:9 - hahaha
二進(jìn)制類型
使用 io.BytesIO
使用 requests 把字符串按照文件上傳
下面的代碼是標(biāo)準(zhǔn)的上傳文件的代碼:
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') 替換為字符串。為此我想到的辦法是把字符串先寫到硬盤上,在按照上面的代碼上傳,可是這太低效率(硬盤太低效率),平白無故多了兩次硬盤讀寫操作,我想直接把內(nèi)存中的字符串按照文件上傳有什么辦法嗎?
參考文檔
https://docs.python.org/zh-cn/3/library/io.html#io.StringIO
以上就是Python實(shí)現(xiàn)不寫硬盤上傳文件的詳細(xì)內(nèi)容,更多關(guān)于Python不寫硬盤上傳文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)文件信息進(jìn)行合并實(shí)例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)文件信息進(jìn)行合并實(shí)例代碼,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Python web框架(django,flask)實(shí)現(xiàn)mysql數(shù)據(jù)庫讀寫分離的示例
這篇文章主要介紹了Python web框架(django,flask)實(shí)現(xiàn)mysql數(shù)據(jù)庫讀寫分離的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11
Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5基本控件使用解析
PyQt5 提供了豐富的輸入輸出控件。本文介紹通過 QtDesigner 工具欄創(chuàng)建常用的基本控件,包括各種按鈕控件、文本輸入控件和調(diào)節(jié)輸入控件2021-10-10
源碼解析python中randint函數(shù)的效率缺陷
這篇文章主要介紹了源碼解析python中randint函數(shù)的效率缺陷,通過討論?random?模塊的實(shí)現(xiàn),并討論了一些更為快速的生成偽隨機(jī)整數(shù)的替代方法展開主題,需要的盆友可以參考一下2022-06-06
Python Pandas describe()函數(shù)的使用詳解
pandas庫中的describe()函數(shù)為我們提供了這樣的功能,它可以快速生成數(shù)據(jù)集的描述性統(tǒng)計(jì)信息,這篇文章主要介紹了Python Pandas describe()函數(shù)的使用介紹,需要的朋友可以參考下2024-05-05
運(yùn)用TensorFlow進(jìn)行簡單實(shí)現(xiàn)線性回歸、梯度下降示例
這篇文章主要介紹了運(yùn)用TensorFlow進(jìn)行簡單實(shí)現(xiàn)線性回歸、梯度下降示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Pytorch evaluation每次運(yùn)行結(jié)果不同的解決
今天小編就為大家分享一篇Pytorch evaluation每次運(yùn)行結(jié)果不同的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01

