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

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

新規登録して質問してみよう
ただいま回答率
85.35%
パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

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

Q&A

解決済

2回答

13261閲覧

相対パスを記述しているが、実行すると「ファイルが見つかりません」と表示されます

umemeco

総合スコア1

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

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

0グッド

1クリップ

投稿2021/04/05 07:12

前提・実現したいこと

超初心者です。
Pythonでエクセルファイルを読み込みたく、相対パスを記述しています。
(一つ上の階層にある別のフォルダの中に該当エクセルファイルがあります)
しかし実行すると、「ファイルが見つかりません」と表示されます。

いろいろと相対パスについて調べましたが解決できず…
読み込むための記述方法を教えてください。

発生している問題・エラーメッセージ

FileNotFoundError: [Errno 2] No such file or directory: '.\data\sample.xlsx'

該当のソースコード

Python

1wb = openpyxl.load_workbook("..\data\sample.xlsx")

試したこと

同じディレクトリに保存し、wb = openpyxl.load_workbook("sample.xlsx")としたが同じように「ファイルが見つかりません」と表示されるイメージ説明

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

ここにより詳細な情報を記載してください。
VS code 1.55.0

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

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

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

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

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

miyabi_takatsuk

2021/04/05 07:14

OSはWindowsでしょうか? なんにせよ、Pythonのパスの書き方は、 \ではなく、/かと思いますので、 \ → /に置き換えて、再度やってみていただけないでしょうか?
K_3578

2021/04/05 07:45 編集

「相対パス」の意味を勘違いしてそうだから一度復習し直したらどうでしょうか。 更新してなかったから気付いてませんでしたが既に回答されてましたね・・・
miyabi_takatsuk

2021/04/05 10:06

\相対パスとして使えるの初めて知った・・・。恥ずい・・・。
guest

回答2

0

ベストアンサー

vscodeで

python

1import os 2os.getcwd()

を実行してください。
表示されるのが現在のディレクトリです。
そのディレクトリの親ディレクトリにdataというディレクトリがありますか。
なければ、カレントディレクトリだと思っているディレクトリが間違っています。
それを修正しましょう。

次に

wb = openpyxl.load_workbook("..\data\sample.xlsx")
は間違いやすい書き方なので、
wb = openpyxl.load_workbook(r"..\data\sample.xlsx")
に変更してみてください。

また、エラーメッセージが
No such file or directory: '.\data\sample.xlsx'
だとすると、どこかで"."と".."を書き間違えている可能性があるので確認してください。

投稿2021/04/05 07:48

ppaul

総合スコア24670

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

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

umemeco

2021/04/06 08:15

丁寧なご回答いただきましてありがとうございます。 親ディレクトリに「data」ディレクトリありました。その上で(r"..\data\sample.xlsx")としましたが、No such file or directory: '..\data\sample.xlsx' と出ます。 結局この書いているファイルと読み込みたいエクセルを同じ階層にし、..\を使わずに無事読み込むことができました。 根本的な解決には遠いのですが、はじめてのチャレンジ(サンプルコードですが…)でわからないことだらけだったので、丁寧にご説明いただけたこと感謝いたします。
guest

0

「相対パス」って、それを書いたファイルの場所からの相対だと勘違いしていませんか?
相対パスは、実行時のカレントディレクトリからの相対です。

ファイルからの相対パスを書きたい場合は、ファイルのパスを取得してそれへの相対パスを連結する必要があります。
Python3.9以降では__file__で絶対パスが得られますので、ディレクトリ部分を取り出して、それに相対パスを連結します。
それ以前の場合は__file__は起動され方により相対パスかも知れないので、「Python ファイル相対」とかでググってください。

投稿2021/04/05 07:30

otn

総合スコア85901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問