1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Jupyter notebook (Docker) で親ディレクトリのファイルを絶対パスで取得できない件について

Last updated at Posted at 2021-04-05

はじめに

Jupyter notebookをDocker環境で使っており、テキストファイルを読み込もうとしたのですが、パスが見つからず困っていたのでまとめます。
親ディレクトリをたどって、特定のファイルを読み込む必要があったので、絶対パスを指定していたがパスが見つからず、親のディレクトリのファイルが読み込めない?そんなことあると思っていましたがそんなわけはありませんでした。

環境

  • python3.8
  • Docker
  • jupyter notebook

問題

ディレクトリ構成がこのようになっている状態で、

/
 ├ experiments/ 
      ├ python
          ├ A.py
      ├ dict
          ├ file.txt
 ├ library/

A.pyからfile.txtが存在していればファイルを読み込む処理をしようとしていた。

if os.path.exists('/experiments/dict/file.txt')

しかし、file.txtがあるはずなのに読み込んでくれなかった。

解決策

Jupyter画面でrootに見えていた場所が実際には違っていて、絶対パスが正しく指定できていなかった。

bandicam 2021-04-05 20-06-43-817.jpg

私はここがrootの位置だと思っていた。
しかし、pwdコマンドでディレクトリを調べたところ

pwd
# 出力された結果
'/home/jovyan/data/experiments/python'

となっていた。/home/jovyan/data/を指定していなかった。

docker-compose.ymlでボリュームを

volumes:
  - ./experiments:/home/jovyan/data

としていたので、Jupyter上にはパスがなく勘違いしていたのが原因だった。

このようにファイルパスを指定しなおして読み込めるようになりました。

if os.path.exists('/home/jovyan/data/experiments/python')

最後に

読み込みでどうするんだろうとなることがしばしばあります。
調べてもこのJupyter問題は簡単に見つからなかったのでまとめました。
もしかしたら、絶対パスを指定するところで詰まる人は少ないのかも?

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?