QPython 存储路径——脚本、数据、模型文件默认存放在哪里
默认目录结构
QPython 安装后,App 私有目录(通常在 /data/data/org.qpython.qpy/,普通用户看不到)下存放了运行时和内置模块。用户实际接触的文件主要在外部共享目录,路径通常是:
/Android/data/org.qpython.qpy/files/
这个目录下可以看到几个子目录:
- scripts/ — QEditor 新建文件的默认保存位置
- download/ — QPYPI 下载第三方包的临时目录
- notebook/ — QNotebook
.ipynb文件的默认存放位置 - ai/ — Ollama 下载的模型文件存放位置(体积会很大)
- log/ — 运行日志
如何查看实际路径
不同 Android 版本和不同厂商 ROM 上实际路径可能不同。最准确的方式是在 QPython 终端里查看:
import os
print(os.getcwd()) # 当前工作目录
print(os.listdir(".")) # 列出当前目录内容
# 查看 App 专属外部存储路径
from androidhelper import Android
droid = Android()
print(droid.getExternalStoragePath())
为什么不能随便写硬编码路径
Android 11+ 强制分区存储(Scoped Storage)。直接写 /sdcard/xxx/yyy.py 或 /storage/emulated/0/Download/xxx.py 在很多手机上会报错,因为:
- 应用只能访问自己的专属目录和媒体库
- 直接硬编码路径绕过了 Android 的存储访问框架
- 不同手机厂商对存储路径的实现略有差异
正确做法:始终用 QPython 返回的路径或 Android 存储访问框架(SAF)选择路径。
从 QEditor 保存文件
在 QEditor 里新建文件后点保存,默认保存到 scripts/ 目录。如果要保存到其他位置,可以:
- 在保存对话框里手动浏览到目标位置(部分版本支持)
- 或者在终端里用代码移动文件:
import shutil
shutil.move("my_script.py", "/storage/emulated/0/Download/my_script.py")
注意:移动到 Download/ 等公共目录需要「管理所有文件」权限,否则会报权限错误。
关于 SD 卡和 USB 存储
外置 SD 卡和 USB OTG 存储需要通过 Android 的存储访问框架(SAF)授权后才能读写。QPython 的文件浏览器会弹出系统的「选择存储设备」对话框,选择后即可访问。
模型文件放在哪
Ollama 下载的模型文件体积非常大(几个 GB 到几十个 GB),默认存在 ai/ 目录下。如果手机内部存储紧张:
- 确认 QPython 已授予「管理所有文件」权限
- 在 QPython 设置里查看是否可以自定义模型存储路径(部分版本支持)
- 或定期清理不用的模型释放空间
路径问题排查
如果脚本报 FileNotFoundError 或 PermissionError:
- 确认文件确实存在于预期位置:
import os; os.path.exists("目标路径") - 确认权限已授予(参考上一页 权限配置)
- 如果是跨目录操作,尝试改用相对路径或通过 SAF 选择路径
小结
QPython 的文件管理遵循 Android 沙盒规范。永远不要硬编码绝对路径,而是通过 os.getcwd() 或 QSL4A 的 getExternalStoragePath() 获取实际路径。这样在不同手机、不同 Android 版本上都能稳定工作。
好了,环境搭建和文件路径都清楚了,现在开始 REPL 交互式控制台 动手写代码。