実行ファイル自身のファイルパスを取得する__file__この広告は、90日以上更新していないブログに表示しています。コマンド別ファイルの読み書きをするようなプログラムの場合のファイルパスの指定についてのメモ。実行ファイルの保存場所と、実行する場所(カレントディレクトリ)は必ずしも一致している訳ではありません。「print()」や「return」で戻り値を返すだけならディレクトリを気にする必要は特に無さそうですが、別ファイルの読み書きをするような場合は注意がいります。変な所に保存されたり...カレントディレクトリを表示するos.getcwd()とりあえずカレントディレクトリについて。実行する場所をワーキングディレクトリやカレントディレクトリと言います。GUI上でマウスを使って操作する時はカレントディレクトリをほとんど気にしませんが、コマンドやプログラムを使っての操作の場合は無視できません。思ってたのと違う動きをすることがよくある。pwdPythonではos.getcwd()。osprint(os.getcwd())実行ファイルの保存場所とは関係なく、ファイルを実行する時のカレントディレクトリが表示される。「何処でこれを実行したか」の表示。f.write(s)このプログラムを「プログラムフォルダ」の中に作った「プロジェクトフォルダ」に保存したとします。ホームディレクトリなどの別な場所からファイルパスを指定してこれを実行した。書き出された別ファイルは実行ファイルの保存場所と同じ「プロジェクトフォルダ」に保存されると思いきや、実行したカレントディレクトリに保存される。よって、このファイルを色んな所から実行する度に「うんこ」と書かれたファイルを散らかすことに...。here.py/な/ん/と/か/here.pyこれは先ほどと違い、「何処で実行しても、ファイル自身の保存場所(絶対パス)を表示」する。これを使って、別ファイルを実行ファイルと同じディレクトリに保存できる。パスのディレクトリ部分を抜き出すos.path.dirname(file)実行ファイルの絶対パスのディレクトリ部分だけを抜き出すには次のようにする。osprint(os.path.dirname(__file__))「/な/ん/と/か/here.py」の「/な/ん/と/か/」の部分だけが表示される。osprint(os.path.basename(__file__))「/な/ん/と/か/here.py」から「here.py」だけが表示される。f.write(s)これで、実行ファイルを何処に移動させても、別のPCでも何処ででも、実行ファイルの保存場所と同じ場所に別ファイルが書き出されるように出来た。読み込む場合も、ファイルの絶対パスを指定するか、または上記のように(__file__)で実行ファイル自身のパスを取得して結合などして行うのが便利と思う。いう事は入門書の真ん中あたりに載っている初歩的なことなんだけど、結構ミスの出やすい所なんじゃないかな、知らんけど。Tumblr広告を非表示にする関連記事2019-09-21Gmailではてなブログに投稿するはてなブログにメールで投稿するこちらの続き。OpenCVを使っての顔検出。Android追記しました。Pandas】売上データからドロップダウンメニューで担当者を指定して抽出、ページに表示する【Flask】複数のinputタグのname属性を同じにしてリストで取り出す【Flask】送信ボタンを押してテキスト送受信を行う【Flask】render_templateでpyファイルとhtmlファイルを分ける目次はてなブログをはじめよう!chayarokurokuroさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。