有没有方法让Python程序“刷新SD卡连接”?
我女儿的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卡会保持连接足够长的时间,让你确认所有文件都成功复制过来了。