Kivy - 获取任何 Android 设备上 DCIM 文件夹的路径

Nic*_*ick 3 python android python-3.x kivy python-3.5

我想确切地知道如何仅使用 Kivy 获取 Android 上 DCIM 文件夹的路径。

PyJinus 不是一个选项,因为它目前不适用于 Python 3.5

到目前为止我尝试过的是:

DATA_FOLDER = os.getenv('EXTERNAL_STORAGE') if platform is 'android' else os.path.expanduser("~")
Run Code Online (Sandbox Code Playgroud)

但这只会让我获得用户区域。有任何想法吗?

Key*_*Usr 5

如果您打算使用 SD 卡作为应用程序的存储空间,请使用user_data_dir并上去(user_data_dir变量的使用会创建一个文件夹):

from kivy.app import user_data_dir
from os.path import dirname, join
join(dirname(user_data_dir), 'DCIM')
Run Code Online (Sandbox Code Playgroud)

或者直接使用它的代码

DCIM = join('/sdcard', 'DCIM')
Run Code Online (Sandbox Code Playgroud)

我认为/sdcard这只是到真实文件夹(无论它在哪里)的符号链接,因此此路径的使用只会在访问时获取值,例如/storage/sdcard0(符号链接)或直接访问真实路径。


除了这些解决方案之外,Android 在环境中具有您所注意到的路径:

  • EXTERNAL_STORAGE ( /storage/emulated/legacy) 再次符号链接到 sdcard
  • SECONDARY_STORAGE ( /storage/extSdCard) 即用于外部卡(如果您在那里存储照片)
  • EMULATED_STORAGE_TARGET ( /storage/emulated) 基本上是您的 SD 卡的父文件夹,真正的 SD 卡(对我来说)位于其中/storage/extSdCard/emulated/0