如何指定Windows 11下连接的USB手机设备文件路径?
如何在Windows 11中通过Python访问Moto G(8) Play内部存储的Documents文件夹
你在Windows 11笔记本上连接Moto G(8) Play手机后,试图用Python代码访问手机内部存储的Documents文件夹,但当前代码里的示例路径(Este Computador\moto g(8) play\Armazenamento interno compartilhado\Documents)无法被os模块识别——原因是Windows通过MTP协议挂载手机存储,这类路径不属于本地文件系统,os模块无法直接读取。以下是几种可行的解决方法:
方法1:手动映射手机存储为驱动器号
Windows允许将MTP设备的存储映射为本地驱动器号,这样就能用常规文件路径访问:
- 打开「此电脑」,右键点击手机的「内部共享存储」,选择「映射网络驱动器」。
- 分配一个未使用的盘符(比如Z:),确认后完成映射。
- 代码里直接使用映射后的路径,比如
Z:\Documents,os模块就能正常调用os.listdir等方法访问文件。 - 注意:手机需保持解锁状态,且连接时选择「文件传输(MTP)」模式。
方法2:使用支持MTP协议的Python库
如果不想手动映射,可以用专门处理MTP设备的Python库,比如pymtp:
- 先安装库:
pip install pymtp - 示例代码(适配Moto G(8) Play的大致逻辑):
import pymtp import time # 初始化并连接MTP设备 mtp = pymtp.MTP() mtp.connect() # 获取手机内部存储(通常是第一个存储设备) internal_storage = mtp.get_storage(0) # 查找Documents文件夹(部分设备路径可能是"/内部存储/Documents",可自行调整) doc_folder = mtp.get_folder(internal_storage, "/Documents") while True: # 获取文件夹内的所有文件 folder_files = mtp.get_files(doc_folder) if folder_files: # 按修改时间排序,取最新文件 latest_file = max(folder_files, key=lambda f: f.mtime) print("\n最新文件:", latest_file.name) time.sleep(1)
- 若不确定Documents的准确路径,可先用
mtp.list_folders(internal_storage)打印所有文件夹,找到对应路径。
关键注意点
- 手机连接时必须选择「文件传输(MTP)」模式,不能是仅充电或照片传输模式。
- 手机需保持解锁状态,否则Windows会限制对内部存储的访问。
- 你原代码中的
usb.core仅能识别USB设备,无法处理MTP协议的文件系统访问,需搭配专门库或映射驱动器来实现。
内容的提问来源于stack exchange,提问作者Luiz Eduardo Diniz Ottoni Juni
相关产品推荐
相关产品推荐

