0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超初心者向け】 VSCODE で Python をテストしたときに起こる「カレントズレ」の対処法

Last updated at Posted at 2024-05-28

Pythonプログラムをファイルに書き込んでテストする際
実行パスがファイルのある場所と違う 場合」に起こる不具合の対処法です。

不具合の例

  • open() を使用するなどしてファイルを操作する場合に、
    ファイルを使用できない。あるいは、書き込み時にエラーを吐く。
  • import を使用して自作のpythonファイルを呼び出そうとするが
    読み込まれない。
  • 上記いずれかが VSCODEのみ で発生する

原因と対策

VSCODE では
Python を実行しているフォルダ( 以降 カレント と呼ぶ )」が
Python の実行ファイルのあるフォルダ( 以降 ファイルパス と呼ぶ )」と違う場合があります。

[ディレクトリ構造の例]

root/
 ┣━ フォルダ1/    #カレント
 ┗━ フォルダ2/    #ファイルパス
    ┣━ 実行ファイル.py
    ┣━ module.py
    ┗━ example.txt

このファイルパスカレントが違う場合。
Python は呼び出そうとするファイル名( example.txtなど )を、そのまま記述すると
カレント からファイルを探そうとします。

当然場所が違うわけですからファイルパス にある
module.py」や「example.txt」は読み込まれません。

そこで本格的な処理を始める前に
カレントファイルパス を同じ場所にしてあげる必要があります。

実際のコード

python current.py
import os

current = __file__
current = current.split("\\")
current.pop()
current = "\\".join(current)+"\\"
os.chdir(current)
  • __file__ : これは予約語と呼ばれる変数の一つで、ここに実行ファイルの 絶対パス が格納されます。
    絶対パスはC://https://など、これ以上さかのぼれない場所 からファイル名を記述する方法で、この方法で記述する場合はパスの間違いは起こりません。
  • os.chidr() : これはカレントの位置を移動させる関数です。

__file__ から実行ファイルの絶対パスを取得して、ファイル名のみを.pop()で削除して、os.chdir() を使ってパスを指定してあげることで、カレントファイルパス と同じ位置に移動させることが出来ます。

もうちょっと うまい書き方があった気がす...

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?