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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

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

Q&A

解決済

4回答

2225閲覧

上位ディレクトリのtxtファイルを読み込みたい

ji-desuji

総合スコア11

Python 3.x

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

0グッド

0クリップ

投稿2020/04/25 07:03

編集2020/04/25 11:14

前提・実現したいこと

ディレクトリ構成
test
|-tt.txt
|-code
| ┗main.py

main.pyを実行し、tt.txtを読み込みたいです。
ご教授いただけますでしょうか?

該当のソースコード

python

1from pathlib import Path 2 3path = Path().cwd().parent / 'tt.txt' 4 5with open(path, 'r') as f: 6 print(f.read())

試したこと

pathlibを使用すれば実現できると思い、いろいろなサイトを参考にして、
やってみたのですが、できませんでした。

相対パスで書いた場合

下記実行すると、No such file or directory: '../tt.txt' と表示されます。

python

1with open('../tt.txt', 'r') as f: 2 print(f.read())

補足情報(FW/ツールのバージョンなど)

win10
python 3.8.2

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

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

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

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

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

guest

回答4

0

main.py

python3

1path = "../tt.txt" 2with open(path, 'r') as f: 3 print(f.read())

実行例
イメージ説明

test ディレクトリで python3 code/main.py と実行すればエラーになります。
cd code してから python3 main.py と実行すれば正常終了します。

投稿2020/04/25 11:12

katoy

総合スコア22328

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

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

0

実行中のスクリプトファイルからの相対指定と言うことで有れば、cwd()は関係ないです。

実行中のスクリプトファイル名のパスは__file__で参照できます。

図からはtt.txtの位置がtestの下なのか横なのか不明ですが、testの下(codeの横)だとすると、

Python

1path = Path(__file__).resolve().parent.parent / 'tt.txt'

でしょうか。

投稿2020/04/25 10:59

編集2020/04/25 11:23
otn

総合スコア86275

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

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

ji-desuji

2020/04/25 11:16 編集

申し訳ございません。ディレクトリ構成を修正しました。 教えていただいたコードでも動作しませんでした。
otn

2020/04/25 11:14

↑コメントする回答を間違えた??
ji-desuji

2020/04/25 11:16

↑すいません。間違えていました。修正しました。
otn

2020/04/25 11:18

> 教えていただいたコードでも動作しませんでした。 print(path)は、どういう結果ですか?
otn

2020/04/25 11:22

失礼しました。相対パス起動だと、絶対パスに直さないと行けないケースもありますね。 修正します。
guest

0

ベストアンサー

相対ディレクトリでいくなら、
../tt.txt
となりますが。

投稿2020/04/25 08:03

y_waiwai

総合スコア88163

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

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

ji-desuji

2020/04/25 11:11

”相対パスで書いた場合”を追記しました。 相対パスは一番最初にやってみたのですが、エラーが出てしまったので、pathlibでできないか探していました。
ji-desuji

2020/04/25 11:29

相対パスで動作しました! PC2台使用しているのですが、片方のPCは動作して、もう片方のPCでは動作しませんでした。 環境は同じはずなのですが・・・
otn

2020/04/25 11:58

相対パスだと、カレントディレクトリがどこかに依存するので、動いたり動かなかったりしますよ。 あるときは動き、あるときは No such file、で正常です。
y_waiwai

2020/04/25 12:06

まずは、そのコードでカレントディレクトリがどこになるのか調べてみては。
guest

0

どのように実行されていますか?

codeディレクトリに移動してから実行すれば動きませんでしょうか?

投稿2020/04/25 07:36

moya_dev

総合スコア183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問