You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python向Android MTP设备复制文件?路径报错求助

问题分析与解决方案

错误原因

Python标准库的os/shutil模块仅支持本地文件系统操作,MTP设备(如你的Fire HD10)并非本地挂载的磁盘分区,MTP:\\Fire\\Internal storage\\xx.img这种路径不符合本地文件系统的语法规范,因此触发WinError 123错误。

可行解决方案

方案1:使用Windows Shell API(推荐,依赖系统原生MTP支持)

Windows资源管理器本身可识别MTP设备,通过pywin32调用系统Shell接口实现文件传输:

  1. 安装依赖库:
pip install pywin32
  1. 替换原有脚本的代码:
import win32com.client
import os

# 本地源文件路径(用原始字符串避免转义)
source = r"C:\Users\BSHR\Desktop\Fire HD10 2019 Bootless\1.img"
# MTP设备名称(需和资源管理器显示一致)
device_name = "Fire"
# 设备内目标文件夹名称
target_folder = "Internal storage"
# 目标文件名
target_filename = "xx.img"

# 初始化Shell对象
shell = win32com.client.Dispatch("Shell.Application")

# 查找目标MTP设备
for item in shell.Namespace(0).Items():
    if item.Name == device_name:
        device = item
        # 定位设备内的目标文件夹
        try:
            target_folder_obj = device.GetFolder.Items().Item(target_folder)
            # 复制文件到目标文件夹(CopyHere为异步操作,大文件需自行添加等待逻辑)
            shell.Namespace(target_folder_obj.Path).CopyHere(source)
            print(f"{source} 已成功传输到设备")
        except Exception as e:
            print(f"传输失败:{str(e)}")
        break
else:
    print(f"未找到名称为 {device_name} 的MTP设备")

方案2:使用第三方MTP专用库(pymtp)

通过专门的MTP操作库直接与设备通信:

  1. 安装依赖库:
pip install pymtp
  1. 示例代码:
import pymtp
import os

source = r"C:\Users\BSHR\Desktop\Fire HD10 2019 Bootless\1.img"
target_filename = "xx.img"

# 初始化MTP设备
mtp = pymtp.MTP()
mtp.connect()

# 获取内部存储的ID(需根据设备实际情况调整)
storage_ids = mtp.get_storage_ids()
internal_storage_id = storage_ids[0]  # 通常第一个是内部存储

# 上传文件到设备
try:
    mtp.send_file(source, internal_storage_id, target_filename)
    print(f"{source} 已成功传输到设备")
except Exception as e:
    print(f"传输失败:{str(e)}")
finally:
    mtp.disconnect()

注意事项

  • 确保设备已切换为MTP传输模式(而非仅充电模式)
  • 设备名称、目标文件夹名称需与Windows资源管理器中显示的完全一致(区分大小写和空格)
  • 大文件传输时,CopyHere是异步操作,若需确认传输完成,可添加文件存在性检查逻辑

内容的提问来源于stack exchange,提问作者BASHEER AHMEED

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:46:05