如何使用 python 访问 MTP USB 设备

Posted

技术标签:

【中文标题】如何使用 python 访问 MTP USB 设备【英文标题】:How to access an MTP USB device with python 【发布时间】:2012-06-25 01:55:18 【问题描述】:

如何在 python 中通过 USB 电缆使用 MTP 读取和写入 Galaxy Nexus 手机? 我在 Windows 7 计算机上。

【问题讨论】:

【参考方案1】:

我也在寻找同样的东西。似乎有 pymtp 用于跨平台,wmdlib 用于 Windows。

【讨论】:

在这些模块上找不到太多文档和示例。 我最终使用并改进了pymtp,它在 GNU/Linux 和 Mac OS X 上运行良好。您可以在此处查看示例:github.com/guardianproject/keysync/blob/master/otrapps/util.py 我使用的是 Windows 7,正在寻找一个简单的解决方案。 pymtp 依赖于 libmtp,而 libmtp 又依赖于必须用来编译它的 LibUSB 和 libiconv... 链接代码中包含注释“#现在win32 'sync'方法是提示用户手动复制文件,所以我们总是返回true。” :-( 对任何版本的 Windows 都没有太大帮助...【参考方案2】:

执行此操作的一种方法是安装 ADB(android 调试桥,SDK 的一部分)并将其作为 python 的子进程启动。 ADB 可用于读取或写入安卓设备。

【讨论】:

不是一个真正的解决方案,因为它需要手机启用 USB 调试,这对我们大多数人来说可能没问题,但对于普通消费者来说却不是。 @Norfeldt 基本上,您必须为您的操作系统安装驱动程序并下载 ADB 文件。你有那个工作吗?然后使用subprocess.Popen运行ADB,例如:res, err = subprocess.Popen([adb, 'push', pc_source, device_dest], stdout=subprocess.PIPE).communicate() 不是解决方案,因为它需要 USB 调试,而大多数用户没有这个。 MTP 应该与 USB 调试一起使用【参考方案3】:

Calibre 是一种流行的电子书管理程序,它具有 python 和 C 源代码,可通过 MTP 连接传输文件。 http://code.google.com/p/calibre-ebook/downloads/list

【讨论】:

在trunk中浏览相关代码的URL:bazaar.launchpad.net/~kovid/calibre/trunk/files/head:/src/… 好像有点复杂。 python 模块似乎无法与普通的 python 解释器一起使用【参考方案4】:

只需在手机和计算机之间连接 USB 数据线即可。

可能需要在手机的设置菜单中启用 MTP 传输。不同版本的安卓和不同的手机型号,菜单选择位置可能会有所不同。尝试谷歌搜索“galaxy nexus enable mtp”。确保在搜索中包含您的 android 和手机版本。

确保它是优质的 USB 电缆。质量差的电缆无法建立良好的连接,因此无法可靠工作。

在我的手机和笔记本电脑之间连接一根 USB 数据线后,我的桌面上会立即出现一个文件管理对话框,显示手机内部存储和 SD 卡。这让我可以直接将文件双向传输到手机 SD 存储(Linux Mint LG Android 版本 5.1

请注意,也可以使用蓝牙传输文件。

建立连接后,您需要找到设备名称。然后就可以使用标准的 python 文件结构打开设备,即popen() 等。

【讨论】:

这与电缆无关。这是关于如何使用 Python 代码在手机上(通过 FTP)编写文件。它就像with open('mtp://SamsungA3/hello.txt', 'w') as f: f.write('hello')...那么简单 我对此投了反对票 - 我同意这与电缆无关。电缆很重要,但代码不像用于打开本地文件的其他代码那样简单。

以上是关于如何使用 python 访问 MTP USB 设备的主要内容,如果未能解决你的问题,请参考以下文章

红米usb调试成MTP模式无法调回

求问如何在MTP模式下恢复手机的文件?

从 PowerShell 使用 System.IO 访问 MTP 存储

用java访问mtp设备

昂达 v891 连接上adb 调试

通过 WPD 访问 MTP 供应商扩展属性