下面的代码是标准的上传文件的代码:
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')
替换为字符串。为此我想到的办法是把字符串先写到硬盘上,在按照上面的代码上传,可是这太低效率(硬盘太低效率),平白无故多了两次硬盘读写操作,我想直接把内存中的字符串按照文件上传有什么办法吗?
问题已解决:搜索
类文件对象(file-like object)
了解更多。参考:
浅谈Python中类文件对象的使用
Python Doc:class io.StringIO(initial_value='', newline='\n')
如果你想上传的是二进制流,比如图片,并且不想通过磁盘这种落后的东西,那么可以用 io.Bytes
io.Bytes 可以帮你把「字节流」伪装成可读可写的文件