Python删除Delphi临时文件的小脚本
生活随笔
收集整理的這篇文章主要介紹了
Python删除Delphi临时文件的小脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Delphi在編譯過程中會產生很多臨時文件,寫了個Python腳本,用于刪除這些臨時文件.
上代碼:
#------------------------------------------------------------------------------- # Name: DelDelphiTempFile.py # Purpose: # 刪除Delphi臨時文件腳本 # Author: garfield # # Created: 26-01-2013 # Copyright: (c) garfield 2013 # Licence: <your licence> #-------------------------------------------------------------------------------#_*_ coding=utf-8 _*_import os,sys from stat import *#預設置臨時文件的擴展名信息 delphitempfile=['dcu','~pas','~dfm','~dsk']def ClearFile(path):for item in os.listdir(path):fname = os.path.join(path, item)mode = os.stat(fname).st_mode#如果是目錄則遞歸調用if S_ISDIR(mode):ClearFile(fname)else:#判斷文件是否在列表中if '.' in fname:#獲得文件類型file_type = fname.rsplit('.',1)[1]if file_type in delphitempfile:print('刪除文件:%s' % (fname))os.remove(fname)if __name__ == '__main__':#判斷命令行參數if len(sys.argv) != 2:print( 'Use: %s path' % sys.argv[0])sys.exit(1)ClearFile(sys.argv[1])執行:
python3 DelDelphiTempFile.py D:\MyDelphiProject
下面再對腳本改造,可以刪除Delphi產生的__history文件夾和SVN版本控制產生的.svn文件夾
#------------------------------------------------------------------------------- # Name: DelDelphiTempFile.py # Purpose: # 刪除Delphi臨時文件腳本 # Author: garfield # # Created: 26-01-2013 # Copyright: (c) garfield 2013 # Licence: <your licence> #------------------------------------------------------------------------------- #!/usr/bin/env python3 #_*_ coding=utf-8 _*_import os,sys from stat import *#預設置臨時文件的擴展名信息 delphitempfile=['dcu','~pas','~dfm','~dsk']def ClearFile(path):for item in os.listdir(path):fname = os.path.join(path, item)mode = os.stat(fname).st_mode#如果是目錄則遞歸調用if S_ISDIR(mode):#print("進入文件夾 %s " %fname)#刪除.svn和_historyif ((item == ".svn") or (item == "__history")):print("刪除文件夾: %s " %fname)print("%d 已刪除" % purge(fname))else:ClearFile(fname)else:#判斷文件是否在列表中if '.' in fname:#獲得文件類型file_type = fname.rsplit('.',1)[1]if file_type in delphitempfile:print('刪除文件:%s' % (fname))os.remove(fname)def purge(path):count = 0for item in os.listdir(path):subpath = os.path.join(path, item)mode = os.stat(subpath).st_modeif S_ISDIR(mode):count += purge(subpath)else:os.chmod(subpath, S_IREAD|S_IWRITE)os.unlink(subpath)count += 1os.rmdir(path)count += 1return countif __name__ == '__main__':#判斷命令行參數if len(sys.argv) != 2:print( 'Use: %s path' % sys.argv[0])sys.exit(1)ClearFile(sys.argv[1])當然,除了以上使用遞歸方法來實現,還可以方便地使用os.walk方法來實現:
#------------------------------------------------------------------------------- # Name: DelDelphiTempFileII.py # Purpose: # 刪除Delphi臨時文件腳本 # Author: garfield # # Created: 26-01-2013 # Copyright: (c) garfield 2013 # Licence: <your licence> #-------------------------------------------------------------------------------''' os.walk: 這個方法返回的是一個三元tupple(dirpath, dirnames, filenames), 其中第一個為起始路徑, 第二個為起始路徑下的文件夾, 第三個是起始路徑下的文件. dirpath是一個string,代表目錄的路徑, dirnames是一個list,包含了dirpath下所有子目錄的名字, filenames是一個list,包含了非目錄文件的名字.這些名字不包含路徑信息,如果需要得到全路徑,需要使用 os.path.join(dirpath, name). '''#!/usr/bin/env python3 #_*_ coding=utf-8 _*_import os,sys from stat import *#預設置臨時文件的擴展名信息 delphitempfile=['dcu','~pas','~dfm','~dsk']def ClearFile(path):for t in os.walk(path):for fname in t[2]:if '.' in fname:#獲得文件類型file_type = fname.rsplit('.',1)[1]if file_type in delphitempfile:print('刪除文件:%s' % (os.path.join(t[0],fname)))os.remove(os.path.join(t[0],fname))for p in t[1]:#print("進入文件夾 %s " %fname)#刪除.svn和_historyif ((p == ".svn") or (p == "__history")):print("刪除文件夾: %s " % os.path.join(t[0],p))print("%d 已刪除" % purge(os.path.join(t[0],p)))def purge(path):count = 0for item in os.listdir(path):subpath = os.path.join(path, item)mode = os.stat(subpath).st_modeif S_ISDIR(mode):count += purge(subpath)else:os.chmod(subpath, S_IREAD|S_IWRITE)os.unlink(subpath)count += 1os.rmdir(path)count += 1return countif __name__ == '__main__':#判斷命令行參數if len(sys.argv) != 2:print( 'Use: %s path' % sys.argv[0])sys.exit(1)ClearFile(sys.argv[1])?
注:以上代碼均在Python3.2上調試通過.
?
轉載于:https://www.cnblogs.com/GarfieldTom/archive/2013/01/26/2877811.html
總結
以上是生活随笔為你收集整理的Python删除Delphi临时文件的小脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeSql (四)实体特性 Flue
- 下一篇: 费曼技巧与博客