有没有方法让Python程序“刷新SD卡连接”?

1 投票
1 回答
845 浏览
提问于 2025-04-18 07:04

我女儿的SD卡坏了,我正在尝试恢复里面的照片和文件。我试过各种恢复软件,但都没成功。

不过,我发现如果用MSDOS,我可以间歇性地复制一些照片,但有时候会出现“驱动器里没有磁盘”的错误。我猜是因为它试图复制的文件坏了,不过我可以通过拔掉SD卡再插回去来解决这个问题。

所以我想到可以写个程序来处理这个问题!:) 我通过DOS获取了文件名,创建了一个文本文件,然后简单写了个程序……但是我还是一直收到“驱动器里没有磁盘”的错误。

所以……有没有办法让这个Python程序“刷新SD卡的连接”呢?

非常感谢。

#!/usr/bin/env python
""" File copy program"""

import os
import shutil

def main(): 
    Basepathfile = os.path.dirname(os.path.abspath(__file__))
    FileName = 'Filenames.txt'
    PrelimPathFile = os.path.join(Basepathfile, FileName )
    PathFile = os.path.normpath(PrelimPathFile)

    Filename1 = open(PathFile, 'r')
    Filename2 = 'c:\\Lili\\'
    for line in Filename1:
        line = line.replace('\r\n', '').replace('\r', '').replace('\n', '')
        Filename1 = 'f:\\DCIM\\Camera\\'+ line
        Filename2 = 'c:\\Lili\\'+ line

        try:
            shutil.copy2(Filename1, Filename2)
            print 'Copied... '
            print Filename1, '...to...', Filename2
        except:
            print 'Failed to copy ', Filename1, ' to ', Filename2

if __name__ == '__main__': 
    main() 

1 个回答

1

这听起来更像是关于Windows的问题,而不是Python。如果你的SD卡是通过USB读卡器连接的,最简单的方法可能就是先禁用再启用它所连接的USB集线器设备。这样做会让Windows重新识别所有连接到这个集线器的USB设备。

你可以通过命令行使用DevCon来实现这个操作:http://support.microsoft.com/kb/311272

如果这个设备不是USB设备,我就不太确定了,但也许DevCon可以通过直接禁用再启用设备来解决问题。

另外,你也可以尝试手动使用robocopy。它有选项可以不复制已经复制过的文件。你可能还是需要手动拔插SD卡几次,但如果运气好的话,SD卡会保持连接足够长的时间,让你确认所有文件都成功复制过来了。

撰写回答