使用Linux终端或Python复制Android MTP文件;错误操作不支持

10 投票
2 回答
5187 浏览
提问于 2025-04-18 18:14

我正在尝试创建一个自己的Python脚本来备份Android手机的镜像文件。我可以看到Android设备已经成功连接,并且可以通过nautilus(一个文件管理器)来移动文件,但在命令行界面(CLI)中却不行。

在命令行中出现的错误是“操作不支持”。

hkhrais@Hkhrais:/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Phone/Download$ cp  DSC03951.JPG /home/hkhrais/Desktop/

cp: cannot open ‘DSC03951.JPG’ for reading: Operation not supported

python代码

try:
            shutil.copyfile('/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Phone/Download/DSC03951.JPG', "/home/hkhrais/Desktop/test")

except:
    raise


Traceback (most recent call last):
  File "scriptt.py", line 33, in <module>
    main()
  File "scriptt.py", line 18, in main
    shutil.copyfile(img, "/home/hkhrais/Desktop/test")
  File "/usr/lib/python2.7/shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 95] Operation not supported: '/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Phone/Download/DSC03951.JPG'

Android 4.2.2 Python 2.7 Ubuntu 14.4

有没有什么想法或者其他的方法呢?

2 个回答

2

试试用PTP(我在用MTP的时候也遇到过同样的错误),但是PTP可以正常工作。在设置里,你可以改变安卓手机连接到电脑时的显示方式,安卓5有两个选项,PTP和MTP。

5

gvfs-copy 来代替 cp 呢。比如说:

gvfs-copy "mtp://[usb:002,06]/Phone/Download/DSC03951.JPG" /home/hkhrais/Desktop/

如果你想在 Python 里执行这个命令,可以用 os.system

import os
os.system('gvfs-copy "mtp://[usb:002,06]/Phone/Download/DSC03951.JPG" /home/hkhrais/Desktop/')

撰写回答