QPython 中文文档 下载 App

QPython 存储路径——脚本、数据、模型文件默认存放在哪里

默认目录结构

QPython 安装后,App 私有目录(通常在 /data/data/org.qpython.qpy/,普通用户看不到)下存放了运行时和内置模块。用户实际接触的文件主要在外部共享目录,路径通常是:

/Android/data/org.qpython.qpy/files/

这个目录下可以看到几个子目录:

如何查看实际路径

不同 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 在很多手机上会报错,因为:

正确做法:始终用 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/ 目录下。如果手机内部存储紧张:

  1. 确认 QPython 已授予「管理所有文件」权限
  2. 在 QPython 设置里查看是否可以自定义模型存储路径(部分版本支持)
  3. 或定期清理不用的模型释放空间

路径问题排查

如果脚本报 FileNotFoundError 或 PermissionError:

  1. 确认文件确实存在于预期位置:import os; os.path.exists("目标路径")
  2. 确认权限已授予(参考上一页 权限配置)
  3. 如果是跨目录操作,尝试改用相对路径或通过 SAF 选择路径

小结

QPython 的文件管理遵循 Android 沙盒规范。永远不要硬编码绝对路径,而是通过 os.getcwd() 或 QSL4A 的 getExternalStoragePath() 获取实际路径。这样在不同手机、不同 Android 版本上都能稳定工作。

好了,环境搭建和文件路径都清楚了,现在开始 REPL 交互式控制台 动手写代码。