/ $ /data/user/0/org.qpython.qpy/files/bin/ qpython3.sh "/storage/emulated/0/Android/da ta/org.qpython.qpy/files/.py" && exit Traceback (most recent call last): File "/storage/emulated/0/Android/data/org.qpython.qpy/files/.py", line 55, in <module> monitor_network(1) # 每隔一秒钟刷新一 次数据 ^^^^^^^^^^^^^^^^^^ File "/storage/emulated/0/Android/data/org.qpython.qpy/files/.py", line 17, in monitor_network io_counters = psutil.net_io_counters(pernic=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/org.qpython.qpy/files/lib/python3.12/site-packages/psutil/__init__.py", line 2139, in net_io_counters rawdict = _psplatform.net_io_counters() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/org.qpython.qpy/files/lib/python3.12/site-packages/psutil/_pslinux.py", line 1074, in net_io_counters with open_text("%s/net/dev" % get_procfs_path()) as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/org.qpython.qpy/files/lib/python3.12/site-packages/psutil/_common.py", line 813, in open_text fobj = open( ^^^^^ PermissionError: [Errno 13] Permission denied: '/proc/net/dev' / $ 翻译一下
时间: 2025-05-25 14:22:06 浏览: 50
这是一段来自 QPython 运行环境的日志,其中包含了一个 Python 脚本运行失败的错误提示。以下是日志的内容翻译和解释:
### 日志内容解读:
1. **QPython 执行命令**
```
qpython3.sh "/storage/emulated/0/Android/data/org.qpython.qpy/files/.py" && exit
```
表示通过 `qpython3.sh` 脚本来运行存储在 Android 设备上的一个名为 `.py` 的 Python 文件。
2. **脚本运行报错信息**
- 报错位置:
```
Traceback (most recent call last):
File "/storage/emulated/0/Android/data/org.qpython.qpy/files/.py", line 55, in <module>
monitor_network(1) # 每隔一秒钟刷新一次数据
```
- 错误来源:
在文件 `/storage/emulated/0/Android/data/org.qpython.qpy/files/.py` 中第 55 行调用了函数 `monitor_network()`,该函数内部尝试使用了 `psutil.net_io_counters(pernic=True)` 来获取网络 I/O 计数器统计信息。
3. **核心问题**
最终导致程序崩溃的原因是权限不足:
```
PermissionError: [Errno 13] Permission denied: '/proc/net/dev'
```
具体来说,`psutil` 库试图读取系统文件 `/proc/net/dev` 获取网络设备状态,但由于缺少必要的权限而抛出了异常。
---
### 核心原因分析:
- **安卓系统的权限限制**:
安卓应用默认无法直接访问某些敏感路径(例如 `/proc/net/dev`)。若需访问此类资源,需要申请额外的权限(如 root 权限)或配置正确的权限声明。
- **解决方案建议**:
如果您希望解决此问题,可以选择以下方案之一:
1. 确保您的设备已越狱/root 并授予应用程序超级用户权限;
2. 修改脚本逻辑,避免依赖对受限文件的操作;
3. 尝试通过其他 API 或者更高版本的 SDK 提供的功能替代原始方法。
---
### 示例修复思路:
假设我们仍然想监控网络流量但不想触碰受保护区域,则可以用 ADB shell 命令或其他非侵入式手段间接查询所需数据。
#### 替代代码样例:
```python
import os
def fetch_net_stats():
try:
result = os.popen('adb shell cat /proc/net/dev').read() # 使用 adb 查询代替直接打开文件
return result.strip()
except Exception as e:
return str(e)
print(fetch_net_stats())
```
注意:此处仅为示意,请结合实际情况调整实现细节。
---
阅读全文
相关推荐



















