Knowhow,NohowKnowhow,NohowJavaScriptPythonDevToolsKnowhow,NohowJavaScriptPythonDevTools【Python】大容量のファイルをアップロードする方法【requests】プログラミングのKnow-howを共有しましょう【Python】大容量のファイルをアップロードする方法【requests】スポンサーリンクPythonのrequestsモジュールを使用して大容量のファイルをアップロードする方法をご紹介します。ポイントはメモリです。RestAPIにファイルをアップロードする時、対象のファイルが大容量だった場合は以下の点を考慮する必要があります。以下の方法は絶対にやってはいけないアップロードの方法です。file.read()requests.post('<URL>',data=uploadData)上記の2行目でメモリにファイルの内容が全て読み込まれてしまいます。近年メモリ容量は増加しているから安心!というわけではなく、それに比例してファイルそのもののサイズも増えています(動画は画質向上から顕著ですね)。終わりの始まりなんてことになります。ならないための方法を2つご紹介するので、是非ご活用ください。1.一番簡単な方法1つ目の方法は非常に簡単です。以下のように指定するだけでファイルをメモリに読み込まずアップロードができます。data=file)ファイルのオブジェクトをrequests.postのdataに指定しているだけです。requestsモジュールの内部でファイルを少しずつ読み込んで送信してくれます。1点、気をつけなければならないのはファイルの読み込みモードに“rb(バイナリモード)”を指定することです。理由としては以下のとおりです。上記の方法を使用するとrequestsモジュールが自動で”Content-Length(ファイルの長さ)”ヘッダーを付加する“Content-Length”はファイル内のバイト数となるので、bを付けずテキストモードで開くと不整合でエラーが発生する可能性がある2.自分で分割する方法2つ目の方法はあまり使い所がないかもしれませんが、紹介します。以下のように自分でファイルを分割してアップロードする方法です。data=chunkReadFile(file))1の方法と同様に、バイト数を指定してファイルを分割するので”rb(バイナリモード)”を指定する必要があります。この方法の利点は以下の通りです。分割サイズを自分で決めることができるメモリに最新の注意を払う状況の時はおすすめの方法です。