有没有办法让python程序“刷新SD驱动器连接”

时间:2014-05-20 08:51:22

标签: python file sd-card

我的女儿SD卡已经腐败,我正在尝试恢复照片/文件。我尝试了各种恢复软件但无济于事。

但是我发现,如果我使用MSDOS,我可以复制各种照片,但间歇性地失败并且说“驱动器中没有磁盘”#34; 我假设它试图复制的文件已损坏,我可以通过拔出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 个答案:

答案 0 :(得分:1)

这听起来更像是关于Windows而不是Python的问题。如果您的SD卡是通过USB读卡器插入的,最简单的方法可能是禁用并重新启用它所连接的USB集线器设备。这将导致Windows重新枚举连接到该集线器的所有USB设备。

您可以使用DevConhttp://support.microsoft.com/kb/311272

从命令行执行此操作

如果这不是USB设备,我不太确定,但也许DevCon仍然可以尝试直接禁用和重新启用设备。

或者,您可以尝试使用robocopy手动执行此操作。它具有不复制已复制文件的选项。您仍然需要手动拉SD卡几次,但如果您很幸运,SD卡将保持足够长的时间以确认最终所有内容都被拉出。