@therealxado

Как указывать пути к файлу в Kivy?

Добрый час! Скажите пожалуйста, если в нативном питоне на ПК я могу обращаться к файлам таким образом: file = open('Файл.txt', 'r', encoding = 'utf-8'), то есть работаю с файлом, который находится в папке с main.py, то как это указывать для уже готового андроид приложения?
  • Вопрос задан
  • 868 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
file = open('Файл.txt', 'r', encoding = 'utf-8'), то есть работаю с файлом, который находится в папке с main.py,

Неправильно. Ты работаешь с файлом, который находится в текущем рабочем каталоге, так как ты указал относительный путь (т.е. не от корня диска).
Текущий рабочий каталог может совпадать или не совпадать с каталогом, в котором находится скрипт. Это зависит от поведения программы, которая скрипт запускает, будь то проводник винды, командная строка или ещё что. Кроме того, программа может менять свой текущий рабочий каталог при желании.
Иными словами, ты не контролируешь, какой будет рабочий каталог на момент запуска программы - разве что поменяешь его самостоятельно.
Так что лучше указывать абсолютный путь. Самый простой способ - получить из sys.argv[0] путь к скрипту и подняться на уровень выше. Вот тогда получишь путь к папке где лежит твой скрипт. И от этого пути уже отталкивайся.
Операции с путями удобнее всего делать с помощью pathlib, или по старинке с помощью os.path.
Ответ написан
Комментировать
@therealxado Автор вопроса
Если кому надо будет, мне это помогло:

from android.permissions import request_permissions, Permission
from android.storage import primary_external_storage_path

if platform == 'android':
    request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE]) # Даём разрешение на чтение и запись (в моём случае)
    dir = primary_external_storage_path()
    barscanner_dir_path = os.path.join(dir, 'PythonFiles') # "PythonFiles" - папка, которую нужно найти и дальше работаем с ней
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
При чем здесь вообще Python? Чтобы сделать что-то более серьёзное чем hello world на Kivy, python'а не достаточно. Нужно отлично знать архитектуру Android. И я вам по секрету скажу, что между десктопными ОС и мобильными очеееень большая разница. Если вы архитектуру Android не знаете, можете про Kivy забыть!

Если не передумали, рекомендую начать отсюда - developer.android.com
Потом это:
File
FileSystem
Data and file storage overview

Когда это прочитаете, и если ваш интерес не угаснет, то перед чтением файла попробуйте запросить нужные разрешения на доступ к фс - Request app permissions
Ответ написан
Ваш ответ на вопрос

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

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