[python] email で、header の更新をしたいとき

python で email を扱うときにheaderにすでに値があると普通には上書きできないです。

例えば、MIMEMultipart を使って試してみます。

新規の場合は、dictionary っぽく使って値を入れられます。
結果は、

となります。

この msg の From を更新します。普通にdictionary っぽく使うと

この結果は、

となり変わりません。

解決方法

replace_header を使ってください。

subject などのエンコードされたものはどうやってやるのかは次回




[python] numpy を使わずに連番配列をランダムに入れ替える

配列をランダムに取り出したいときに、インデックスの連番を配列にしてシャッフルすることがあると思います。
numpy ありなら簡単に思いつくのですが、問題は、numpy なしの場合。
あまりにも numpy に慣れてしまうと numpy なし環境で作らないといけない状況で戸惑ってしまったので記載しておきました。

例えば、IDとパスワードが入った2つの配列や、問題と正解が入った配列などです。

これをランダムに全て取りしたいときに、インデックスの配列を作ります。

この、list_idx をランダムにシャッフルすると、

そして、普通にfor文で回せばランダムに取り出せます。

結果は

と、ランダムに全ての値が取れました。

ちょっと長くなりましたが、こんな使い方をするときにnumpyなら簡単に

これで、index_list は

になります。
numpy なしの場合は。

python3系

これで、index_list は

python2系

これで、index_list は

となりました。