@Rozetka01
Только начал осваивать IT

Как правильно прописать путь к файлу?

Здраствуйте, не получается прописать путь к файлу в боте(на сервере). Как сделать правильно? Файл хранится в папке "document"

import document
f = "document\\Литература.docx"

@dp.callback_query_handler(lambda c: c.data)
async def send_file(query: types.callback_query):
  with open("document\\Литература.docx", 'rb') as f:
    if query.data == 'button1':
      await query.message.answer_document(f)
  with open("document\\Литература.docx",
      "rb") as f:
    if query.data == 'button2':
      await query.message.answer_document(f)
  with open("document\\Литература.docx", "rb") as f:
    if query.data == 'button3':
      await query.message.answer_document(f)
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Пути могут быть абсолютные и относительные. В вашем случае указан относительный путь. Относительный путь, если его не присоединять к абсолютному, указывает на файл или каталог относительно текущего пути. В каждом процессе операционной системы есть внутреннее состояние того текущего пути. Если текущий путь н еменять, то он обычно наследуется от родительского процесса, или равен пути, по которому запустили скрипт.
Указывайте путь либо абсолютно, либо относительно текущего пути в вашем приложении.
Используйте pathlib - это сейчас самый современный и правильный способ работать с путями.
Абсолютные пути начинаются со слеша (ну или с указания диска, если речь о винде), а относительные нет.
Надо учить матчасть и азы прежде чем программировать ботов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@WowDev
Программист
Надо перед расположение писать .\\ (.\)

Исправный код:
import document
f = ".\\document\\Литература.docx"

@dp.callback_query_handler(lambda c: c.data)
async def send_file(query: types.callback_query):
  with open(".\\document\\Литература.docx", 'rb') as f:
    if query.data == 'button1':
      await query.message.answer_document(f)
  with open(".\\document\\Литература.docx",
      "rb") as f:
    if query.data == 'button2':
      await query.message.answer_document(f)
  with open(".\\document\\Литература.docx", "rb") as f:
    if query.data == 'button3':
      await query.message.answer_document(f)


если у вас линукс то замените \\ на /
Ответ написан
Ваш ответ на вопрос

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

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