大家在工作中,有沒(méi)有遇到這個(gè)問(wèn)題,那就是在使用python的時(shí)候,無(wú)法實(shí)現(xiàn)不寫(xiě)硬盤(pán)上傳文件,這樣會(huì)導(dǎo)致工作效率大大降低。那么,怎么才能夠?qū)崿F(xiàn)python不讀寫(xiě)硬盤(pán)上傳文件呢?下面給大家列舉了幾種實(shí)例,希望能夠?qū)Υ蠹規(guī)?lái)幫助,祝大家在工作中,早日實(shí)現(xiàn)財(cái)富自由。
引言
假如說(shuō)你寫(xiě)了一個(gè)api,并且能夠接受client上傳的文件,然后在上傳到oss,那么這個(gè)時(shí)候,你會(huì)怎么做?先寫(xiě)硬盤(pán),然后在上傳到oss?太笨了!
你寫(xiě)了一個(gè)截圖服務(wù),截到的圖要上傳到oss,你會(huì)怎么做?先寫(xiě)硬盤(pán),在上傳到oss?太笨了!
那么,這篇文章,就教你怎么去實(shí)現(xiàn)上述功能!
一、文本類型
使用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())
輸出結(jié)果如下:
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
再看一個(gè)熟悉的:
1、import io
2、from loguru import logger
3、file_like_obj=io.StringIO("hahaha")
4、with file_like_obj as f:
5logger.debug(f.read())
輸出結(jié)果如下:
2022-07-11 21:35:04.620|DEBUG|__main__::9-hahaha
二、二進(jìn)制類型
使用io.BytesIO
使用requests把字符串按照文件上傳
下面的代碼是標(biāo)準(zhǔn)的上傳文件的代碼:
1、import requests
2、import 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')替換為字符串。為此我想到的辦法是把字符串先寫(xiě)到硬盤(pán)上,在按照上面的代碼上傳,可是這太低效率(硬盤(pán)太低效率),平白無(wú)故多了兩次硬盤(pán)讀寫(xiě)操作,我想直接把內(nèi)存中的字符串按照文件上傳有什么辦法嗎?
參考文檔
https://docs.python.org/zh-cn/3/library/io.html#io.StringIO
以上就是Python實(shí)現(xiàn)不寫(xiě)硬盤(pán)上傳文件的詳細(xì)內(nèi)容,更多關(guān)于Python不寫(xiě)硬盤(pán)上傳文件的資料,請(qǐng)繼續(xù)關(guān)注本小編哦
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.hztianpu.com/yun/127484.html
摘要:文件的基本操作編碼不同編碼之間的二進(jìn)制是不能互相識(shí)別的。返回值有幾種情況分別是沒(méi)有返回值返回一個(gè)值返回多個(gè)值。函數(shù)定義計(jì)算的長(zhǎng)度函數(shù)調(diào)用因?yàn)闆](méi)有返回值,此時(shí)的為只寫(xiě),后面不寫(xiě)其他內(nèi)容,也會(huì)返回,但是遇到會(huì)終止整個(gè)函數(shù)。 文件的基本操作 編碼 1.不同編碼之間的二進(jìn)制是不能互相識(shí)別的。2.對(duì)于文件的存儲(chǔ),及傳輸 不能是unicode的編碼。 bytes:內(nèi)部編碼格式(非unicode) ...
摘要:代碼審計(jì)一文件上傳概述在網(wǎng)站的運(yùn)營(yíng)過(guò)程中,不可避免地要對(duì)網(wǎng)站的某些頁(yè)面或內(nèi)容進(jìn)行更新,這時(shí)便需要使用到網(wǎng)站上的文件上傳功能。 PHP 代碼審計(jì):(一)文件上傳 0x00 概述 在網(wǎng)站的運(yùn)營(yíng)過(guò)程中,不可避免地要對(duì)網(wǎng)站的某些頁(yè)面或內(nèi)容進(jìn)行更新,這時(shí)便需要使用到網(wǎng)站上的文件上傳功能。如果不對(duì)被上傳文件進(jìn)行限制,或限制被繞過(guò),該功能便有可能會(huì)被利用于上傳可執(zhí)行文件、腳本到服務(wù)器上,今兒進(jìn)一步導(dǎo)...
?前言 在Python寫(xiě)代碼做項(xiàng)目時(shí),我們往往需要對(duì)多個(gè)文件進(jìn)行操作,在現(xiàn)在的源代碼文件中怎么導(dǎo)入其他文件?怎么對(duì)其他文件進(jìn)行操作?這都是經(jīng)常要面臨的問(wèn)題,尤其是爬蟲(chóng),爬到的數(shù)據(jù)放在哪里?用到的時(shí)候怎么調(diào)出來(lái)? 這就涉及到了Python的文件操作知識(shí)了,我們不可能永遠(yuǎn)都只會(huì)在一個(gè)源文件上做所有的操作,這也是必須掌握的一個(gè)知識(shí)板塊。 與此同時(shí),我的Python新手入門(mén)教程系列文章也已經(jīng)快更新完了,歡...
摘要:負(fù)責(zé)從拉取數(shù)據(jù)源,把數(shù)據(jù)源分詞,建立索引搜索模塊工作流程如下模塊從中拉取數(shù)據(jù)模塊用經(jīng)過(guò)中文分詞后的數(shù)據(jù)建立索引客戶端向模塊發(fā)起搜索請(qǐng)求模塊查找索引中的數(shù)據(jù)模塊得到索引中符合要求的數(shù)據(jù)的等數(shù)據(jù)把數(shù)據(jù)返回給客戶端 (整理自《App后臺(tái)開(kāi)發(fā)運(yùn)維和架構(gòu)實(shí)踐》 作者:曾健生) 一、從業(yè)務(wù)邏輯中提煉API接口 此過(guò)程可分為六個(gè)階段: 業(yè)務(wù)邏輯思維導(dǎo)圖 功能——業(yè)務(wù)邏輯思維導(dǎo)圖 基本功能模塊關(guān)系 ...
閱讀 1173·2023-01-14 11:38
閱讀 1162·2023-01-14 11:04
閱讀 992·2023-01-14 10:48
閱讀 2546·2023-01-14 10:34
閱讀 1249·2023-01-14 10:24
閱讀 1132·2023-01-14 10:18
閱讀 738·2023-01-14 10:09
閱讀 823·2023-01-14 10:02