パンダの休日

雑多な書き残し

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
おはようございます。

Pythonの環境を3.3に移行しました。
前の前の記事のPython備忘録には2.7でいいと書いておきましたが(後で編集します)、文字列の扱いに嫌気が差して3.3に移行することにしました。
Python3.3はまだ対応していないライブラリも多いんですが、そこは困ってから考えようということで。
今まで作ったファイルは、2.7で作ったファイルを3に対応するよう変換する2to3.pyというプログラムが(Python3x\Toos\scripts\)あるのでそれを利用して変換する。
但し、3以降の除法(3/2が1ではなく1.5と評価される)については変換されないので別途洗い出して変換し直す必要がある。
(2.xの頃は1.0*7/2のようにして実数の除法を行う書き方もできたので、これを自動変換すると結果が変わってしまう。)
ディレクトリ内の.pyファイルを探して本プログラム(ch23.py)以外全て2to3.pyに送るという雑なプログラムを以下に。

import os
import subprocess as sp
files = [x for x in os.listdir(os.getcwd()) if x.count(".py") == 1 and x.count("ch23.py") == 0]
#print(files)
for i in files:
out=sp.Popen(["python", "C:\Python33\Tools\scripts\{}".format("2to3.py"), "-w", "{0}\{1}".format(os.getcwd(),i)], stdout=sp.PIPE)
print(str(out.communicate()[0]))

こんな面倒くさそうなことも実質5行でパパっとかけて楽ですね。
importをまとめてprint省いてforの:の横に書けば3行ですね。
実にお行儀が良くて気が利く。
変換が行われた場合に表示されるメッセージがbyte型で、上手く表示されませんがご勘弁ください。直すの面倒臭いんで。
Python3では文字列はutf-8が標準になっているので2.xから変換したファイルを実行するとType error Byte ナントカカントカ
と返ってくることがありますがとりあえずstr()でくくれば何とかなるようです。
Python3ではロング型が統一されたり文字列の型を気にせずかけたりrange()がxrange()仕様になったり割り算が(普通の人にとっての)普通な仕様になったりと2系列の気持ち悪い部分が直っていてPythonらしさが増してるように感じました。
Pythonは言語仕様がやりたいことの邪魔をしない、という部分が気に入っているので今後もその方向のPythonらしさに期待してます。

あと、コードをHTML記事に書く時は<pre><code>   </code></pre>の間に書くと正しく表示されるようです。
初めて知ったので使ってみました。

スポンサーサイト

shader

Author:shader
多趣味飽き性に振り回されて色々やってます。

直接連絡したい方は御気軽にメールしてください。 3日以内には返信させて頂きます。

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。