堀 浩一

Home About

   English

WindowsでPythonを使う

(老いぼれ教授のプログラミング日記)

2019年3月9日

私は普段、macだけを使っています。
しかし、62歳になる頃から、MacBook Airですら、重いと感じるようになってしまいました。
そこで、2018年にFMV U75Bという軽いWindows ノートPC (748g) を購入しました。

最初は、プレゼンテーションやメールの読み書きや事務書類の処理だけにこのノートPCを使っていました。(プレゼンテーションは、mac上の自作プログラムが出力したhtmlファイルをwindowsで表示してやっていました。私はpowerpointは嫌いなので使いません。)
あー、しかし、出張中に、自分のプログラムを修正したりテストしたりしたくなることが、何度もありました。 :-)
このWindowsノートPCはあきらめて、MacBook Airに戻るべきでしょうか?
私の仲間は、MacBook Airに戻るのが最善の方策だと言います。しかし、買ったばかりの WindowsノートPCを捨てたくなかったので、このWindowsノートPCにPythonをインストールすることにしました。


以下、WindowsでPythonを使おうとしてわかったいくつかのことのメモです。

WindowsでPythonをインストール

WindowsでPythonをインストールするのは簡単でした。
下のURLにアクセスしてインストールパッケージをダウンロードします。
https://www.python.org/downloads/windows/ .

何の問題もなくPython3.7をインストールすることができました。


WindowsでPythonを走らせる

WindowsでPython3を走らせるためのコマンドは、 python3 ではなく python または py です。


WindowsのPythonでunicodeのファイルを読み書きする

WindowsのPythonで unicodeのmulti-byte characterが含まれているファイルを読み書きしようとすると、'UnicodeDecodeError'という、macでは出ないエラーになってしまいます。
これに対処するためには、ファイルをopenする時に、encoding="utf-8"と指定してやる必要があるようです。たとえば、

open(filename, "r", encoding="utf-8")

としてやります。



subprocess.runをWindowsで使う

私のプログラムの中で、ファイルをコピーするのに、下のように、subprocess.runを使っている箇所がありました。


import subprocess
subprocess.run(["cp", '/Users/hori/mysystem/templatefile.html', myworkingfile])

"cp"を"copy"に変えてやらなければなりません。Windowsですものね、もちろん。
さらに、スラッシュ(/)をバックスラッシュ(\)に変えなければなりません。気が狂いそう。 でも、Windowsですから。もちろん。

さあ、
subprocess.run(["copy", '\Users\hori\mysystem\templatefile.html', myworkingfile])

でうまくいくかというと、そうはいきません。
バックスラッシュをさらにバックスラッシュでエスケープしてやらなければなりません。 すなわち、 '\\Users\\hori...'という具合に。ああ、面倒臭い。
もうちょっと簡単にするために、Pythonのraw string (r + string)を使うことができて、こうします。

subprocess.run(["copy",r'\Users\hori\mysystem\templatefile.html', myworkingfile])


あー、やっと、これで僕のPythonプログラムがWindowsでも走るようになりました。


(下のように、openを使ってファイルを開くときは、スラッシュをバックスラッシュに変える必要はありません。

open('/Users/hori/mysystem/templatefile.html', "r", encoding="utf-8")

PythonがOSごとのpath記法の違いに対処してくれるんですね。)




CC0
To the extent possible under law, the person who associated CC0 with this work has waived all copyright and related or neighboring rights to this work.






関連項目:
映画「グリーンブック」を観て、年寄り人工知能研究者が考えること - 人種その他の差別とAI(人工知能)について
人工知能として認識されない人工知能の埋め込まれる社会に向けて
WindowsのコマンドプロンプトでUnicodeを使う
文明と文化と科学と技術
FacebookボタンとTwitterボタンをきちんと並べる
倫理的AIの設計を支援するためのAI
堀 浩一
工学と理学の違い
堀 浩一 ホーム
人工知能とは
MeCabを使っていると、"'utf-8' codec can't decode byte 0xfa in position 0: invalid start byte" というエラーが起こる
文化国家としての技術立国 ー 猪瀬博教授の思い出