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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1746閲覧

PosixPathインスタンスにファイルパスを追加する方法

ruuuu

総合スコア174

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/01 03:23

PosixPathインスタンスにパス及びファイル名を追加することは可能でしょうか。
こちらの記事を参考に以下のように試してみたのですが、エラー(SyntaxError: invalid syntax)が発生してしまいました。

from pathlib import Path import os import environ env = environ.Env() # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent env.read_env(BASE_DIR / app_project / .env)

以下のように、str型に変換しつなげる形ではなく、PosixPathインスタンスを活用した形でパスを連結させる方法はありませんでしょうか。
env.read_env(str(BASE_DIR) + "/app_project/.env")

どなたか、ご助言頂けましたら幸いです。

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

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

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

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

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

guest

回答1

0

文字列は引用符で囲みます。

Python

1(BASE_DIR / "app_project" / ".env")

投稿2021/04/01 03:38

otn

総合スコア84598

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

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

ruuuu

2021/04/01 03:50 編集

ご回答ありがとうございます。 ご掲載の形で試してみたのですが、現状以下のようなエラーが出力されてしまっている状況です。 env/lib/python3.8/site-packages/environ/environ.py", line 635, in read_env content = f.read() AttributeError: 'PosixPath' object has no attribute 'read'
TakaiY

2021/04/01 06:07 編集

そのエラーは元の質問とは別なので、別質問にしたほうがいいと思います。 でも、ちょっと見てみました。 environ のソースを見ると、該当箇所はこんな処理になっていました。 with open(env_file) if isinstance(env_file, basestring) else env_file as f: content = f.read() 渡されたものが「文字列(basestring)」でなければそのまま使うようになっています。 ようするに、このread_env関数はpathlib.Pathに対応していないということです。 なので、 - openしてからread_envに渡す - pathlib.Path から文字列に変換して渡す のいずれかで対応となるでしょう。
ruuuu

2021/04/01 08:44

そういったことだったのですね。 ありがとうございます。 > - pathlib.Path から文字列に変換して渡す こちらの方法で対処したいと存じます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問