2011-11-12 17 views
2

こんにちは私はPythonリクエストライブラリ(http://docs.python-requests.org/en/latest/index.html)を使用してテキストファイルを投稿するのに問題があります。Python-Requestsライブラリを使用してテキストファイルを投稿する

関連する質問を検索したところ、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には、テキストファイルを投稿する必要があります。

ご協力いただきましてありがとうございます。

答えて

5

ファイルパラメータには、ファイルハンドラに一致するファイル名のdictが必要です。これは、ソースコードに記述されている(現在は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}) 
+0

はありがとうございました!それは今働いています –

+0

私はあなたが書き込みのためだけにファイルを開いていることに気付いたので、私は私の答えにさらに追加するつもりでした。ファイルを実際に読み取ることができるようにするには、ファイルを開いて読み書きする必要があります。さらに、あなたの書き終わったテキストの後に、 'seek'を0にリセットする必要があります。これの目的がローカルファイルで終わるのではなく、単にファイルとしてテキストを投稿するのであれば、実際のファイルは終わりの手段にすぎません。Python標準ライブラリのStringIOモジュールを使用してテキストを書くことをお勧めします。それはファイルのように振る舞いますが、完全に記憶にあります。 – sudorandom