質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

959閲覧

Pythonにおいて、読み込みファイルの定義場所に悩む

giyomu

総合スコア2

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/07/16 07:54

編集2021/07/16 09:34

前提・実現したいこと

機械学習を使った機能を実装している際に複数のデータ(CSVやJSONなど)を読み込む必要があり、それらのファイルパスを定義する場所について毎回悩んでしまいます。

私がよく取る方法としてはiniファイルや定数をまとめたconstants.pyのようなスクリプトファイルの作成です。

私自身の認識が甘くそもそもconfig.ini内に何を書くべきなのか、ファイルパスなどを書いてもいいのか、またconstans.pyのようなスクリプトファイルを用意することの良し悪しの判断もついていません。

上記の方法が問題ないのか、他に良い方法があるのかなど、判断の基準や判断をするための知識・意見などを聞かせていただけると助かります。

当質問にて聞いたことの答えや手引きになる書籍、ドキュメントなどがあれば教えていただけると助かります。

言語

  • Python

試したこと

  • PATHを直接埋め込み。(定数をソースコード内で定義)
  • config.iniなど、iniファイルなどに定義してみる。
  • constants.pyなど定数を定義するスクリプトファイルを用意してみる。

実際に作成している物のイメージ

constants.pyのイメージです。
値自体は適当です。

panel_data1 = "xxxxx/hoge/panel_data1.csv" panel_data2 = "xxxxx/hoge/panel_data2.csv" panel_data3 = "xxxxx/fuga/panel_data3.csv" panel_data4 = "xxxxx/fuga/panel_data4.csv" panel_data5 = "xxxxx/piyo/panel_data5.csv" panel_data6 = "xxxxx/piyo/panel_data6.csv"

補足

ファイルパスについて「処理内に直接記述じゃない(定数などを用意している)なら変更なんてしないから何でもいい」と聞いた事がありますが、機械学習などをしていると結構な頻度で変更や確認をしたいので、可能であるならば触りやすい場所にまとめておきたいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

特に一般的な方法はないと思います。

ファイルの形式としてはjsonを使うのが楽だと思いますが、単なるテキストファイルでもcsvでも何でもよいでしょう。

触りやすい場所にまとめておきたい、ということなら、config.iniとかconstants.pyのような固定名にせずに、実行時のコマンドラインオプションにすることをお勧めします。

コマンドラインオプションの指定は、argparse --- コマンドラインオプション、引数、サブコマンドのパーサーをお読みください。

jsonを使うなら、json --- JSON エンコーダおよびデコーダをお読みください。

投稿2021/07/16 08:42

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

giyomu

2021/07/16 09:20

実装の方法やドキュメントまで記載していただき、丁寧な回答ありがとうございます。 やはり決まった方法というのはないのですね。 jsonを使うのが楽との事なので、今後はjsonも使ってみて自分なりに良い方法を構築しようと思います。
TakaiY

2021/07/16 11:37

書きやすくて読みやすいということで、yamlもお勧めします。
giyomu

2021/07/16 12:10

確かに書き換える可能性がある場合は可読性も意識しないとですね…… アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問