Отладчик VS Code не может найти файл, но файл существует

Я использую VS Code для Python (пакет anaconda и OpenCV).

Я отлаживаю программу (нажимаю F5) и получаю следующую ошибку.

говорит, что файл не найден/ но файл есть, когда я запускаю через терминал

код, с которым я получаю сообщение об ошибке

import cv2 as cv
import os
import numpy as np

pathsyn = os.path.realpath("synset_words.txt")

print("path", pathsyn)

syn = open(pathsyn,"r").read().strip().split("\n")

syncls = [r[r.find(" ") +1:] for r in syn]

vid = cv.VideoCapture(0)

net = cv.dnn.readNetFromCaffe("Classifiers/model/bvlc_googlenet.prototxt","Classifiers/model/bvlc_googlenet.caffemodel")

хотя оба файла synset_words.txt,AI02.py находятся в одном каталоге

оба находятся в одном каталоге

если я изменю код на

pathsyn = os.path.realpath("OpenCV/synset_words.txt")

тогда это работает.

import cv2 as cv
import os
import numpy as np

pathsyn = os.path.realpath("OpenCV/synset_words.txt")

print("path", pathsyn)

syn = open(pathsyn,"r").read().strip().split("\n")

syncls = [r[r.find(" ") +1:] for r in syn]

vid = cv.VideoCapture(0)

net = cv.dnn.readNetFromCaffe("OpenCV/Classifiers/model/bvlc_googlenet.prototxt","OpenCV/Classifiers/model/bvlc_googlenet.caffemodel")

Каталоги; .vscode находится за пределами папки OpenCV

это потому, что .vscode папка находится в предыдущем каталоге, а мои AI02.py и synset_words.txt находятся в папке OpenCV.

Каталог, в котором VS Code находит файл (где также находится папка .vscode):

C:\Users\user\Documents\Python Scripts

но файл находится в (где код vs должен направлять отладчик, например терминал):

C:\Users\user\Documents\Python Scripts\OpenCV

person Haseeb Ayub    schedule 13.11.2019    source источник
comment
Не могли бы вы опубликовать свои коды напрямую вместо скриншота? Их сложно рассмотреть на скриншоте.   -  person Gen Wan    schedule 13.11.2019
comment
Изменения @GenWan были внесены для облегчения понимания. Пожалуйста, посмотрите вопрос еще раз. благодарю вас.   -  person Haseeb Ayub    schedule 14.11.2019
comment
Не могли бы вы распечатать os.getcwd() и опубликовать результат здесь?   -  person Hamza Hathoute    schedule 14.11.2019
comment
@HamzaHathoute current path os.getcwd(): c:\Users\user\Documents\Python Scripts, а путь должен быть c:\Users\user\Documents\Python Scripts\OpenCV. Надеюсь, поможет.   -  person Haseeb Ayub    schedule 14.11.2019
comment
Попробуйте установить текущий рабочий каталог на тот, который вам нужен, используя os.chdir(path) перед pathsyn = ...   -  person Hamza Hathoute    schedule 14.11.2019
comment
@HamzaHathoute, это может сработать, но это временное решение. Я хочу установить отладчик VS Code в c:\Users\user\Documents\Python Scripts\OpenCV в качестве каталога по умолчанию вместо c:\Users\user\Documents\Python Scripts   -  person Haseeb Ayub    schedule 14.11.2019
comment
Вы пробовали stackoverflow.com/q/38623138/9406615?   -  person Hamza Hathoute    schedule 14.11.2019
comment
@HamzaHathoute Вау!! Спасибо... Работайте как шарм!! :)   -  person Haseeb Ayub    schedule 14.11.2019


Ответы (2)


В launch.config измените CWD на папку ИЛИ просто используйте команду, указанную ниже:

{
    "version": "0.2.0",
    "configurations": [
        {
            ....,
            "cwd" : "${workspaceFolder}/${relativeFileDirname}"
        }
    ]
}
person JASIM AHMED    schedule 31.12.2020
comment
Это работает для меня, спасибо! - person han shih; 24.07.2021

Попробуйте установить текущий рабочий каталог на тот, который вам нужен, используя os.chdir(path) перед pathsyn = ... Hamza Hathoute 4 часа назад

@HamzaHathoute, это может сработать, но это временное решение. Я хочу установить для отладчика VS Code каталог c:\Users\user\Documents\Python Scripts\OpenCV в качестве каталога по умолчанию, а не c:\Users\user\Documents\Python Scripts

Вы пробовали stackoverflow.com/q/38623138/9406615? – Хамза Хатхуте 3 часа назад

Добавление "cwd": "${workspaceFolder}/opencv" к моему launch.json кода VS решило проблему.

Я хотел бы сказать СПАСИБО @Hamza Hathoute за решение. СПАСИБО @Andy K и @jonrsharpe за предложения по редактированию.

person Haseeb Ayub    schedule 14.11.2019