现在的位置: 首页 > 编程语言 > 正文

恢复百度云盘本地误删的文件脚本—python

2017年01月10日 编程语言 ⁄ 共 1310字 ⁄ 字号 评论关闭
程序员最喜欢的衬衫

今天被同步盘搞得焦头烂额。

辛苦码的代码(除了重要的、备份过的)都被删掉了……

当时我就石化了。。。

随后发现同步盘目录有个delete目录,里面还有manifest.xml,和一堆改了名的文件,

看到manifest.xml的内容时,瞬间觉得有救了,立马开搞python

废话不多说,直接上代码:

#-*- coding:utf-8 -*-
from xml.etree import ElementTree
import os
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

def convertfile(cachePath,orgPath):
    '''恢复文件'''
    start=0;
    while True:
        index = orgPath.find('\\', start)
        if index == -1:
            break
        start = index + 1

    orgDir=orgPath[:start]
    print 'orgDir:',orgDir

    if not os.path.exists(orgDir):  
        os.makedirs(orgDir)  
    if not os.path.exists(orgPath) or(os.path.exists(orgPath) and (os.path.getsize(orgPath) != os.path.getsize(cachePath))):  
        file_in=open(cachePath, "rb")
        file_out=open(orgPath, "wb")
        file_out.write(file_in.read()) 
        file_in.close()
        file_out.close()
   
    
def read_xml(text):
    '''读xml文件'''
    root = ElementTree.fromstring(text)
    
    lst_node = root.getiterator("record")
    for node in lst_node:
        cp=node.attrib['cachePath']
        op=node.attrib['orgPath']
        cp=cp.replace('~','.')
        op=op.replace('~','.')
        print cp+'->'+op
        convertfile(cp,op)
    
if __name__ == '__main__':
    '''将本文件放在云同步盘的根目录下,
       将mani_file改为需要恢复的manifest文件'''
    mani_file=".\\.baohe.cache\\.delete\\20140412\\manifest.xml"
    read_xml(open(mani_file).read())

本文件在Python2.7.6下正常,3.4貌似有问题(汗

python可以在官网下载:https://www.python.org/downloads/

将本文件(假如叫做huifu.py)放在云同步盘的根目录下,比如云同步盘在“d:\baiduyun\”,那么文件应该在“d:\baiduyun\”下,最终是这样的“d:\baiduyun\huifu.py”

千万不要轻易从百度云上删除已经上传的文件啊!血泪教训。。。

抱歉!评论已关闭.