Python Kivy 将文件写入/读取到 SD 卡

Posted

技术标签:

【中文标题】Python Kivy 将文件写入/读取到 SD 卡【英文标题】:Python Kivy write/read file to SD card 【发布时间】:2015-08-03 01:46:16 【问题描述】:

通过使用 Python 和 Kivy,我想将文件写入用户手机的(虚拟)SD 卡,并在不同的函数中再次读取该文件。由于 androidios 和 Windows Phone 可能有不同的 SD 卡路径,因此使用“plyer”似乎是个好主意。 如何我如何写入/读取文件到/SD卡

【问题讨论】:

没有 iOS 设备有 SD 卡插槽。 【参考方案1】:

SD 卡路径

from jnius import autoclass  # SDcard Android

# Get path to SD card Android
try:
    Environment = autoclass('android.os.Environment')
    sdpath = Environment.getExternalStorageDirectory()

# Not on Android
except:
    sdpath = App.get_running_app().user_data_dir

user_data_dir 也适用于 Android,但它依赖于已过时的 /sdcard 符号链接。不过我不知道是 IOS 还是 Windows Phone。

复制到 SD 卡

import shutil

sdpathfile = os.path.join(sdpath, 'filename')
shutil.copyfile(os.path.join('folder', 'filename2'), sdpathfile)

【讨论】:

【参考方案2】:

使用Kivy的user_data_dir返回用户文件系统所在目录的路径。

然后使用 Kivy 的storage 将数据存储到目录中的一个文件中。

【讨论】:

有人告诉我 user_data_dir 只能在 PC 上工作,但确实可以。应该只是尝试过。代码:sdpath = App.get_running_app().user_data_dir Kivy IRC:这行得通,但是 /sdcard 符号链接已经过时了,所以你不应该依赖这个。

以上是关于Python Kivy 将文件写入/读取到 SD 卡的主要内容,如果未能解决你的问题,请参考以下文章

用python读/写kivy小部件属性

android中实现向sd卡中续写文件的问题:

解决将zip文件不慎写入sd(tf)卡中

Android测试读写sd卡文件与写sd卡文件耗时

如何从互联网将文件写入 SD 卡?

esp32 Arduino SD卡写入文件的问题