Задать вопрос
@Chupep322

Как сделать чтобы VS code видел прочие файлы?

Я новичок и изучаю python, использую в vs code т.к больше нравится работать в нем, проблема в том что когда нужно использовать прочие файлы с диска то vs code в упор их не видит, например простая программа на tkinter где окно с картинкой, одинаковый код, в pycharm всё работает и картинка появляется, а в vs code терминал выдаёт ошибку, что якобы по этому пути не может найти такой файл. Пробовал писать сайты, когда код уже готов пишу в терминал python app.py и получаю ошибку что не получается такой файл, как это можно исправить?
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Дай угадаю, ты везде используешь относительные пути в файлам?
Тогда дело в текущем рабочем каталоге. Это школьный курс информатики, если что.
Вспомнить всё

Есть два типа путей к файлам - абсолютные (начинаются с буквы диска и идут от корня диска, скажем, C:\Windows\System32\cmd.exe) и относительные (идут не от корня, например, cmd.exe). Для работы с файлом системе в итоге будет нужен абсолютный путь.
Если же ты используешь относительный путь, этот абсолютный путь рассчитывается исходя из текущего рабочего каталога твоей программы. Т.е. если ты обращаешься к app.py, а твой текущий каталог C:\Users\Chupep32\Desktop, то ты обратишься к C:\Users\Chupep32\Desktop\app.py.
Рабочий каталог каталог может, но не обязан совпадать с каталогом, где лежит код программы, и может, но не обязан меняться в ходе её выполнения. У каждой запущенной программы свой текущий рабочий каталог, он может, но не обязан совпадать с текущим каталогом какой-либо другой запущенной программы.

PyCharm перед запуском скрипта выставляет в качестве текущего рабочего каталога папку проекта, поэтому относительные пути работают сразу и без проблем. Но поскольку скрипты можно запускать очень по-разному, то и текущий каталог при запуске может быть разным. Как следствие, полагаться на относительные пути нельзя, как ты только что убедился на горьком опыте.
Если тебе нужно обратиться к файлу именно рядом с твоим скриптом, построй абсолютный путь к нему сам. Встроенный модуль pathlib в помощь.
import sys
from pathlib import Path

SCRIPT_DIR = Path(sys.argv[0]).parent.resolve()  # путь к каталогу твоего скрипта
SOME_FILE = SCRIPT_DIR / 'image.png'  # путь к файлу в этом каталоге
with open(SOME_FILE, 'rb') as img:  # с этим путём работаешь как обычно, преобразуешь его в str, если надо
   ...
Ответ написан
@Chupep322 Автор вопроса
Вообщем то на третий день экспериментов я так и не понял что было не так, но проблему решил создав переменную и привял к ней файл и в дальнейшем её использовал
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы