【python】ファイルパス(path)の指定方法

【python】ファイルパス(path)の指定方法

 パスの設定はpath.dirname(__file__)を使うと便利です。環境を変えたときにも不具合が出にくいと思います。

 ###2021/11/20追加###
将来的にexe化を考えている場合は以下も合わせて確認ください。
 【python】exeにすると動かない

サンプルソースコード

from os import path
import codecs 

###############################
own_path=path.dirname(__file__)
f_name="テスト.txt"

print("足し算で作ったpath1")
r_path1=own_path+"\\"+f_name
print(r_path1)
print("\n")

print("path.jpinで作ったpath2")
r_path2=path.join(own_path,f_name)
print(r_path2)
print("\n")

#################################

################################
print("path1で読み込み")
r_txt = codecs.open(r_path1, 'r', 'UTF-8')
text = r_txt.read()
print(text)

print("\n")

print("path2で読み込み")
r_txt = codecs.open(r_path2, 'r', 'UTF-8')
text = r_txt.read()
print(text)
################################

変数説明&実行結果

【変数説明】
own_path=path.dirname(__file__)・・・実行したtest1.pyのパスを取得
f_name=”テスト.txt”・・・読み込むファイルの名前
path1・・・足し算で作ったパス
path2・・・path.jpinで作ったパス

【サンプルソースコードの実行結果】

内容説明

 サンプルでは2種類の方法を記載しています(path1、ptha2)。どちらでも好きなほうを使ってください。(筆者はpath2の方式を主に使っています)
 ファイルパスの指定方法は相対パスもありますが、path.dirname(__file__)を使って「.py」ファイルのパスを取得して加工する本方法をお勧めします。(筆者の経験では、相対パスだと問題が発生することが多いです。おそらく、どこからの相対か?が想定していない箇所になっているためと思います。)

あとがき

 ファイル操作をするときに最初に躓いたのがパス指定でした。足し算でパスを作る場合に「”¥¥”(¥は半角にしてください)」と記載が必要と気が付くのに時間がかかったのが思い出です・・・。また、相対パスで意図しない場所にデータを保存したり嵌ることが多かったです。現状は下記の記載で落ち着いています。ご参考まで

from os import path
own_path=path.dirname(__file__)
f_name="テスト.txt"
r_path2=path.join(own_path,f_name)


 ¥についてはこちらもあわせてお読みください。
【python】¥r¥nとか\nとか何なの!?

そのほかのご参考
【python】csvファイルを読み込む
【python】テキストから特定の行を取り出す