堀 浩一

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.






関連項目(自動計算):
WindowsのコマンドプロンプトでUnicodeを使う
Ruby on RailsでURLをredirectする
MeCabを使っていると、"'utf-8' codec can't decode byte 0xfa in position 0: invalid start byte" というエラーが起こる
モバイル端末のための css <pre> と <code>
FacebookボタンとTwitterボタンをきちんと並べる
WindowsからMacにVNCで接続しようとするとlogin windowが固まる
Google検索の結果にfaviconを表示する
長崎原爆の日
機械屋と電気屋では振動のメンタルモデルが異なる
UAV/UGV Autonomous Cooperation
五七五, 五七五七七などの俳句や短歌みたいな語列をテキストから抽出するプログラム
UNESCO: `Do you know AI or AI knows you better? Thinking Ethics of AI'
AI(人工知能)と哲学
堀 浩一: 最終講義
人工知能として認識されない人工知能の埋め込まれる社会に向けて
映画「グリーンブック」を観て、年寄り人工知能研究者が考えること - 人種その他の差別とAI(人工知能)について
文化国家としての技術立国 ー 猪瀬博教授の思い出
倫理的AIの設計を支援するためのAI
工学と理学の違い
東京大学学術資産等アーカイブズポータル ー UTokyo Digital Collections
AI ELSI賞
堀 浩一 ホーム
文明と文化と科学と技術
人工知能とは
堀 浩一