Python實現(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
二進制類型
使用io.BytesIO
使用 requests 把字符串按照文件上傳
下面的代碼是標準的上傳文件的代碼:
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實現(xiàn)不寫硬盤上傳文件的詳細內(nèi)容,更多關(guān)于Python不寫硬盤上傳文件的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。