python 如何使用 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') 替换为字符串。为此我想到的办法是把字符串先写到硬盘上,在按照上面的代码上传,可是这太低效率(硬盘太低效率),平白无故多了两次硬盘读写操作,我想直接把内存中的字符串按照文件上传有什么办法吗?

阅读 3.4k
1 个回答
import requests
import io

response = requests.post('http://localhost:5000/', files={
    'file': io.StringIO('你好')
})
print(response.text)

问题已解决:搜索 类文件对象(file-like object) 了解更多。

参考:
浅谈Python中类文件对象的使用
Python Doc:class io.StringIO(initial_value='', newline='\n')


如果你想上传的是二进制流,比如图片,并且不想通过磁盘这种落后的东西,那么可以用 io.Bytes

io.Bytes 可以帮你把「字节流」伪装成可读可写的文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题