Chromebook の Linux 開発環境では Python の開発が出来ます。Python でカレントディレクトリ配下のファイルの絶対パスを取得際は pathlib.Path の resolve() を使用すると思いますが、存在しないファイルを指定すると Windows と Linux系OS で挙動が異なるので注意が必要です。
目次
Path.resolve() の挙動の違い
Path.resolve() について
詳しくはマニュアルを参照ください。
パスを絶対パスにし、あらゆるシンボリックリンクを解決します。新しいパスオブジェクトが返されます
マニュアル
Path.resolve() を使用すると絶対パスを取得することが出来ます。
import pathlib
import os
# /home/kewton/work/pathlib/test.txt
print(pathlib.Path("./test.txt").resolve())
Windows と Linux系OSでの挙動の違い
Windows と Linux系OS での挙動の違いをまとめると以下のようになります。
存在しないファイル名を指定時 Windows ではファイル名のみが返却されますが、Linux系OSではあたかもカレントディレクトリに指定したファイルが存在している場合の絶対パスが返却されることが解ります。
ファイルの存在有無 | windows での実行結果 | Linux系OS での実行結果 |
---|---|---|
存在する | 絶対パスが返却 | 絶対パスが返却 |
存在しない | ファイル名が返却 | カレントディレクトリに指定した ファイルが存在している場合の絶対パスが返却 |
動作確認に使用したコード
下記コードを Windows マシンと Linux系OSのマシン(Chromebookを使用)で動作させて確認しました。
import pathlib
import os
if __name__ == "__main__":
print(os.listdir(os.getcwd()))
print(pathlib.Path("./test.py").resolve())
print(pathlib.Path("./test.txt").resolve())
まとめ
本記事では、 Path.resovle() の OSによる挙動の違いを説明しました。ご参考になりましたら twitter をフォローして SNS でシェアして頂ければ幸いです。
ご参考
ちなみに今回は、 Linux系OSの動作確認環境として下記 Chromebook を使用しました。
14.0型フルHD × Core i3 × メモリ8GB を満たす数少ない端末です。
軽くて持ち運びしやすく開発に耐えうるスペックなのでおすすめです。
価格:70,510円 |