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