Pythonのプログラムを書いているときによく使うけど,
使いかたを忘れて,いつもぐぐってるので,
メモがてら,ここにどんどん書いていきます.
os.chdir(os.path.dirname(os.path.abspath(__file__)))
プログラム内でファイルを読み書きするときには,
相対パスを使ったほうが,環境が変化しても(プログラムをほかの人にあげたりしても)
修正する必要がないので楽なのですが,
その相対パスは,カレントディレクトリからのものになります.
カレントディレクトリというのは,たとえばコマンドプロンプトでは,
C:\Users\ts> <- これがカレントディレクトリです.
ですので,
C:\Users\ts> py ./Desktop/program.py と
C:\Users\ts\Desktop> py program.py では
カレントディレクトリが違い,相対パスのところで No such a file と怒られてしまいます.
この一文で,どのカレントディレクトリから実行しても,強制的に実行中のファイルがあるディレクトリがカレントディレクトリになるので,
環境に起因する相対パスのエラーが起こらなくなるっていうことですね!