【问题标题】:Using Python-Requests Library to Post a Text File使用 Python-Requests 库发布文本文件
【发布时间】:2011-11-12 20:02:25
【问题描述】:

您好,我在使用 Python 请求库 (http://docs.python-requests.org/en/latest/index.html) 发布文本文件时遇到问题,您能告诉我我做错了什么吗?

我尝试搜索相关问题并找到了这个Send file using POST from a Python script,但它没有回答我的问题。

这是我的代码:

import codecs
import requests

# Create a text file
savedTextFile = codecs.open('mytextfile.txt', 'w', 'UTF-8')

# Add some text to it
savedTextFile.write("line one text for example\n and line two text for example")

# Post the file THIS IS WHERE I GET REALLY TRIPPED UP
myPostRequest = requests.post("https://someURL.com", files=savedTextFile)

我在上面尝试了一些变体,但我没有得到任何结果(每次都有新错误)。如何发布我刚刚创建的这个 txt 文件?我尝试发布的 API 需要发布一个文本文件。

感谢任何帮助!

【问题讨论】:

    标签: python post http-request python-requests


    【解决方案1】:

    files 参数需要一个与文件处理程序匹配的文件名字典。这在源代码中有所描述(当前为第 69 行):

    Github Source (requests/models.py)

    #: Dictionary of files to multipart upload (``{filename: content}``).
    self.files = files
    

    有时最好的文档就是代码。

    最后一行应该如下所示:

    myPostRequest = requests.post("https://someURL.com", files={'mytextfile.txt': savedTextFile})
    

    【讨论】:

    • 我打算在我的答案中添加更多内容,因为我还注意到您只有打开文件以供写入。对于能够实际读取文件的请求,您需要打开文件进行读取和写入。此外,您还需要在完成编写文本后将“seek”重置为 0。如果这样做的目标不是以本地文件结尾,而只是将文本作为文件发布,而实际文件只是达到目的的一种手段,我建议使用 Python 标准库中的 StringIO 模块来编写文本.它就像一个文件,但完全在内存中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多