久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python 程序比較兩文件夾差異并讀取出來

 昵稱QAb6ICvc 2013-01-28
Python 程序比較兩文件夾差異并讀取出來
2010-09-24 15:20:03     我來說兩句      
收藏    我要投稿
        在客戶那邊建庫,,需要把幾百個(gè)G幾十萬個(gè)文件導(dǎo)入到Oracle里,好不容易導(dǎo)完了才發(fā)現(xiàn)中間缺了好幾大塊數(shù)據(jù),,約有四分之一吧,,郁悶得很。

        數(shù)據(jù)是客戶從第三方買的,,據(jù)客戶分析是拷貝過來的時(shí)候有部分?jǐn)?shù)據(jù)漏掉了,,但漏掉的數(shù)據(jù)又沒有什么規(guī)律,加之文件夾的嵌套層數(shù)很多,,查找起來很困難,。

        客戶又從第三方那邊拷了一份全的數(shù)據(jù),現(xiàn)在對這個(gè)問題有兩種處理方案,,一種是全部重新導(dǎo)一遍,,大約得花一周多的時(shí)間;另一種方案是把兩個(gè)數(shù)據(jù)的差異找出來,,把差異的部分追加進(jìn)去就行了,。

        項(xiàng)目的時(shí)間比較緊張了,只能選第二種方案,,可如何把差異的數(shù)據(jù)找出來呢,,試了幾個(gè)文件夾比較的工具,處理幾百兆的數(shù)據(jù)都吃力,,更不必說這么大量的數(shù)據(jù)和文件了,。

        后來想了想,覺得Python解決這個(gè)問題比較方便,,就研究了一下Python里的文件和目錄操作,,很快就完成了下面的一個(gè)腳本,可以很好地解決這個(gè)問題,。

        下面的腳本可以在Python24里很好地運(yùn)行,,在其他版本里沒有測試,但用的都是基本功能,,應(yīng)該沒有什么問題,。

        代碼里的PathA是全的數(shù)據(jù)的文件夾,PathB是不全的數(shù)據(jù)的文件夾,,PathC是個(gè)新的空目錄,,腳本執(zhí)行完后就把PathA中有且pathB中沒有的文件和目錄都寫到PathC里了,還可以保持原來的目錄結(jié)構(gòu),,速度和正確性都很令人滿意。

        因?yàn)槭羌庇玫拇a,,所以寫得不很簡潔,,也不是很規(guī)范,,在此留志,一方面供自己以后參考,,另一方面也提供給需要使用Python進(jìn)行文件和目錄操作的兄弟們共同參考,。

代碼如下:

# coding: GB2312

#系統(tǒng)模塊
import sys
import os
import shutil
#用于文件查找的模塊
from os.path import walk, join, normpath

#這個(gè)是完整的文件夾
PathA = "F:\FullData\"
#這個(gè)是缺文件的文件夾
PathB = "F:\IncomplData\"

#這個(gè)是目標(biāo)文件夾
PathC = "F:\DiffData\"

#============================================================
#這個(gè)函數(shù)是用來遞歸處理PathA,對PathA里的每個(gè)文件和文件夾在PathB中找是否有對應(yīng)的文件或文件夾
#若找不到,,則在PathC中創(chuàng)建目錄并拷貝文件
#拷貝文件時(shí)使用了shutil模塊的copy2函數(shù),,以保留文件原來的創(chuàng)建時(shí)間和最后更新時(shí)間
def visit(arg, dirname, names):
    #把目錄打印出來,以監(jiān)視進(jìn)度
    print dirname
   
    #得到路徑名后,,把前面的主路徑名去掉
    dir=dirname.replace(PathA,"")
   
    dirnameB = os.path.join(PathB,dir)
    dirnameC = os.path.join(PathC,dir)
   
    if os.path.isdir(dirnameB):
        #若PathB里存在對應(yīng)的文件夾,,再逐個(gè)文件判斷是否存在
        for file in names:
            if os.path.isfile(os.path.join(dirname

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多