python 復制文件夾內容 并結構一致_Python比較文件夾比另一同名文件夾多出的文件并復制出來的方法...

本文實例講述了Python比較文件夾比另一同名文件夾多出的文件并復制出來的方法。分享給大家供大家參考。具體如下:

這個東東本來是做來給公司數據同步用的:新服務器還沒正式啟用,舊的服務器還在使用,每天都有大量圖片傳到舊服務器上面,為了避免備份全部圖片,所以寫了這么個工具。

1. 運行效果如下圖所示:

2. Python代碼如下:

復制代碼 代碼如下:# coding=gbk

'''

Created on 2011-1-7

@author: HH

'''

import os,ConfigParser

'''

遞歸列出某目錄下的文件,放入List中

'''

def listDir (fileList,path):

files=os.listdir(path)

for i in? files:

file_path=path+"\\"+i

if os.path.isfile(file_path):

fileList.append(file_path)

for i in files:

file_path=path+"\\"+i

if os.path.isdir(file_path):

#fileList.append(file_path)

listDir(fileList,file_path)

return fileList

'''

將List中內容寫入文件

'''

def writeListToFile(list,path):

strs="\n".join(list)

f=open(path,'wb')

f.write(strs)

f.close()

'''

讀入文件內容并放入List中

'''

def readFileToList(path):

lists=[]

f=open(path,'rb')

lines=f.readlines()

for line in lines:

lists.append(line.strip())

f.close()

return lists

'''

比較文件--以Set方式

'''

def compList(list1,list2):

return list(set(list1)-set(list2))

'''

復制List中文件到指定位置

'''

def copyFiles(fileList,targetDir):

for file in fileList:

targetPath=os.path.join(targetDir,os.path.dirname(file))

targetFile=os.path.join(targetDir,file)

if not os.path.exists(targetPath):

os.makedirs(targetPath)

if not os.path.exists(targetFile) or (os.path.exists(targetFile)

and os.path.getsize(targetFile)!=os.path.getsize(file)):

print "正在復制文件:"+file

open(targetFile,'wb').write(open(file,'rb').read())

else:

print "文件已存在,不復制!"

if __name__ == '__main__':

path=".svn"

#獲取源目錄

txtFile="1.txt"

#目錄結構輸出的目的文件

tdir="cpfile"

#復制到的目標目錄

cfFile="config.ini";

#配置文件文件名

fileList=[]

#讀取配置文件

if(os.path.exists(cfFile)):

cf=ConfigParser.ConfigParser()

cf.read(cfFile)

path=cf.get("main", "sourceDir")

txtFile=cf.get("main","txtFile")

tdir=cf.get("main","targetDir")

else:

print "配置文件不存在!"

raw_input("\n按 回車鍵 退出\n")

exit()

if(os.path.exists(txtFile)):

#如果導出的文件存在,就讀取后比較

list1=readFileToList(txtFile)

print "正在讀取文件列表……"

fileList=listDir (fileList,path)

print "正在比較文件……"

list_res=compList(fileList,list1)

if len(list_res)>0:

print "以下是原目錄中不存在的文件:\n"

print "\n".join(list_res)

print "\n共計文件數:"+str(len(list_res))+"\n"

if raw_input("\n是否復制文件?(y/n)")!='n':

copyFiles(list_res,tdir)

else:

print "沒有不相同的文件!"

else:

#如果導出的文件不存在,則導出文件

print "正在讀取文件列表……"

fileList=listDir (fileList,path)

writeListToFile(fileList,txtFile)

print "已保存到文件:"+txtFile

raw_input("\n按 回車鍵 退出\n")

3. 配置文件名:config.ini如下:

復制代碼 代碼如下:#配置文件名:config.ini

[main]

sourceDir=wwwroot

txtFile=1.txt

targetDir=cp

希望本文所述對大家的Python程序設計有所幫助。

小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373809.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

css控制頁面文字不能被選中user-select:none;

現象:html中可能有些地方不想讓用戶復制文字,或是用a標簽做了個點擊按鈕,點快的時候文字會被選中,很丑,這個時候可以使用下面的方案禁止文字選中。原因:鼠標點快了文字會被選中。解決方案:不同的…

form表單標簽的enctype屬性的作用

Enctype是指定將數據回發到服務器時瀏覽器使用的編碼類型,其編碼類型有以下三種 一、 application/x-www-form-urlencoded 這是通過表單發送數據時默認的編碼類型。我們沒有在from標簽中設置enctype屬性時默認就是application/x-www-form-urlencoded類型的。…

重溫“ Java Sucks”

總覽 關于Java的不足之處(從C開發人員的角度來看)的一個有趣的文檔是在一段時間(大約2000年前)寫的,但是今天許多論點都像十年前一樣真實(或不真實)。 原始的Java Sucks發布。 短消息回顧 Ja…

Android Studio IDE Out of Memory

場景: 嘗試過各種方式,IDE重裝,重新啟動,設置IDE MEMORY大小JDK MEMORY大小都無效 終于在FILE->INVALIDATE CACHES/RESTART 中點擊重新啟動之后問題攻克了。轉載于:https://www.cnblogs.com/yxwkf/p/5128094.html

git 忽略 部分文件夾_git設置忽略文件和目錄

1.登錄gitbash命令端進入本地git庫目錄AdministratorPC201601200946 MINGW32 /d/gitrespository/crmweb (master)2.創建.gitignore3.修改文件,添加忽略正則.idea //忽略.idea文件夾及文件夾下文件*.iml //忽略以.iml結尾的文件【例子】# 忽略*.o和*.a文件*.[oa]# 忽…

在Spring MVC REST應用程序中自動生成WADL

上一次我們學習了WADL的基礎知識 。 語言本身并沒有那么有趣,只寫了一篇有關它的文章,但是本文的標題揭示了為什么我們需要這些知識。 JSR 311的許多實現:JAX-RS:RESTful Web服務的Java API提供了開箱即用的運行時WADL生成&#x…

JSP靜態導入與動態導入

JSP靜態導入(JSP指令標記include) JSP頁面第一次被請求時,會被JSP引擎轉譯成Servlet的Java文件,然后再被編譯成字節碼文件執行。JSP指令標記為JSP頁面轉譯提供整個頁面的相關信息。 include指令用于在JSP頁面靜態插入一個文件&…

關于DJANGO和JAVASCRIPT的時間

最近,實際一些簡單統計時,要到庫里去檢索數據出來用HIGHCHARTS畫圖, 作一個簡單的回照。。 DJANGO用TEMPLATEVIEW來作。專業,正規:) class SAView(TemplateView):template_name version/sa_site.htmlpagin…

git里面的文件怎么刪不掉_.git目錄刪不掉

這樣的情況并非是第一次遇到了,以前總是會覺得這樣的問題只是電腦的錯亂,重啟一下電腦就好了,但是并非每次都需要重啟電腦的,其實簡單的設置一下,這個問題就可以解決了。對了,咱們還是說說這到底是個什么問…

集成框架比較– Spring集成,Mule ESB或Apache Camel

公司之間的數據交換增加了很多。 必須集成的應用程序數量也增加了。 這些接口使用不同的技術,協議和數據格式。 但是,這些應用程序的集成應以標準化的方式建模,有效實現并由自動測試支持 。 JVM環境中提供了三個可滿足這些要求的集成框架&…

Vue.js組件學習

組件可以擴展HTML元素&#xff0c;封裝可重用的HTML代碼&#xff0c;我們可以將組件看作自定義的HTML元素。組件系統提供了一種抽象&#xff0c;讓我們可以使用獨立可復用的小組件來構建大型應用。 一個簡單組件例子(全局注冊&#xff09; <!DOCTYPE html> <html>&…

Winform MD5

1&#xff1a;MD5 http://www.cmd5.com/ 字節數組----字符串 //將字節數組中每個元素按照指定的編碼格式解析成字符串//直接將數組ToString()//將字節數組中的每個元素ToString() //ToString("Params") ToString("x") //可以將十進制字符串轉換為16進制字符…

HTML元素顯示與隱藏

在WEB開發中&#xff0c;前臺HTML中經常需要控制元素的隱藏與顯示&#xff0c;我們最為最常見是二級導航欄&#xff08;通過鼠標的移動來觸發onmouseover&#xff0c;onmouseout事件來實現二級菜單的顯示與隱藏&#xff09;二級菜單的顯示與隱藏。 然而控制元素的影響與顯示有…

書評:JavaFX 2.0:示例介紹

盡管Oracle在JavaOne 2010和JavaOne 2011上對JavaFX的更改使我從懷疑論者轉變為對JavaFX的信奉者 &#xff0c;但是JavaFX愿景的轉變并非沒有缺點 。 特別是&#xff0c;JavaFX圖書市場一直很棘手&#xff0c;因為幾乎所有可用的JavaFX圖書都與1.x版本有關。 在這篇文章中&…

腦子越來越不好使,文字越來越像馱shi

沒辦法&#xff0c;還是記下來。。。轉載于:https://www.cnblogs.com/thorlet/p/5926595.html

python機制_python異常機制個人理解(參考網上資料)

當你的程序中出現異常情況時就需要異常處理。比如當你打開一個不存在的文件時。當你的程序中有一些無效的語句時&#xff0c;Python會提示你有錯誤存在。下面是一個拼寫錯誤的例子&#xff0c;print寫成了Print。Python是大小寫敏感的&#xff0c;因此Python將引發一個錯誤&…

NYOJ 24 素數距離問題

素數距離問題 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;2描述 現在給出你一些數&#xff0c;要求你寫出一個程序&#xff0c;輸出這些整數相鄰最近的素數&#xff0c;并輸出其相距長度。如果左右有等距離長度素數&#xff0c;則輸出左側的…

C#控件大小隨窗體大小等比例變化

相信很多博友在開發初次接觸學習C# winForm時&#xff0c;當窗體大小變化時&#xff0c;窗體內的控件并沒有隨著窗體的變化而變化&#xff0c;最近因為一個項目工程的原因&#xff0c;也需要解決這個問題。通過查閱和學習&#xff0c;這個問題得到了解決&#xff0c;或許不是很…

Google Appengine登臺服務器操作方法

Google的App Engine開箱即用&#xff0c;支持版本化部署。 您可以非常輕松地在各修訂版之間來回切換&#xff0c;這是在上線之前正確測試應用程序的一項很棒的功能。 有一個主要問題&#xff1a;應用程序的所有版本共享同一數據存儲。 因此&#xff0c;如果要遷移數據&#xff…

下 面 這 條 語 句 一 共 創 建 了 多 少 個 對 象 : String s=a+b+c+d;

javac 編譯可以對字符串常量直接相加的表達式進行優化&#xff0c; 不必要等到運行期去進行加法運算處理&#xff0c; 而是在編譯時去掉其中的加號&#xff0c; 直接將其編譯成一個這些常量相連的結果。題目中的第一行代碼被編譯器在編譯時優化后&#xff0c; 相當于直接定義了…