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临时文件的小脚本相关推荐

  1. 用python实现背单词的小脚本系统

    python 前提准备 安装好python及其环境 安装好Oracle数据库 python中安装好cx_Oracle包,且能与数据库正常联立交互 注: 前提准备部分的内容不做描述,百度均有教程 步骤: ...

  2. python 删除文件、目录_python脚本删除文件及删除文件目录的方法

    类型:数据恢复大小:372KB语言:中文 评分:.9 标签: 立即下载 下面来看一下python里面是如何删除一个文件及文件夹的~~ 首先引入OS模块 import os 删除文件: os.remov ...

  3. python打印九九加法表_Python小脚本

    1.跑马灯效果 ''' 跑马灯 ''' import os import time def main(): content='人生苦短,我用python....' while True: os.sys ...

  4. python批量删除微信好友_Python找出微信上删除你好友的人脚本写法

    原标题:Python找出微信上删除你好友的人脚本写法 相信大家在微信上一定被上面的这段话刷过屏,群发消息应该算是微信上流传最广的找到删除好友的方法了.但群发消息不仅仅会把通讯录里面所有的好友骚扰一遍, ...

  5. 查看Linux服务器网卡流量小脚本shell和Python各一例

    有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡).脚本中都用了while tru ...

  6. python删除数据库的数据完整代码_利用python操作小程序云数据库实现简单的增删改查...

    不止python,你可以利用任何语言那实现通过http请求来操作你自己的小程序云数据库了 背景 也是在最近吧,小程序更新了云开发 HTTP API 文档,提供了小程序外访问云开发资源的能力,使用 HT ...

  7. python分词统计词频_基于结巴分词做的全文分词统计词频小脚本

    受朋友之托,写一个小脚本,断断续续做了两天,写一下两天的收获. 起因 有个朋友说专业文档很枯燥难懂,需要一个能把全文的关键词找出来并排序的东西,找不到现成的,问我能不能做一个.我前些天也听车神说有关分 ...

  8. python爬虫脚本ie=utf-8_分享一个Python爬虫小脚本

    此Python小脚本为抓取此页面:http://tieba.baidu.com/p/2108681777 下的所有jpg图像 ''' Created on 2013-4-2 @author: Admi ...

  9. python课堂随机点名_【工作中的Python】随机点名小脚本

    背景:项目组每周的例会中,有一项固定内容就是技术分享,可以是与工作相关或无关的任何技术主题.进行技术分享讲解的同学是随机抽签的.由此做了一个Python的小脚本用于抽取姓名. 脚本内容如下: #!/u ...

最新文章

  1. elasticsearch 的filter cache (search 技术的冰山一角)
  2. python-学习 协程函数 模块与包
  3. 成功解决TypeError: Object of type 'ndarray' is not JSON serializable
  4. 财务审批流程都有哪些步骤呢?
  5. Javascript中的循环变量声明,到底应该放在哪儿?
  6. HTML连载70-相片墙、盒子阴影和文字阴影
  7. Python六大框架对比
  8. Honeyview 漫画阅读器 v5.30.zip 下载
  9. linux卸载kodi,如何在Ubuntu 18.04上安装Kodi
  10. java去除水印,Java 删除/复制Word文档水印
  11. Java - 使用Cipher类实现加密(RSA)
  12. #PPT进阶——图片变形
  13. PHP 垃圾回收机制
  14. 第二章 进程的描述与控制【操作系统】
  15. 下载kaggle比赛的数据集
  16. 1.socket网络编程
  17. gzp解压命令 linux_Linux gzip命令:压缩文件或目录
  18. 软工小队第二次会议 4-23
  19. C/C++——老夫记不住
  20. selenium登录优酷

热门文章

  1. c语言整数与平均值,编写求一组整数的和与平均值的程序
  2. linux分区表与uboot,Linux和Uboot下eMMC boot分区读写
  3. php打印输出小于10的数字,PHP 字符串输出 echo、print 与 printf 函数
  4. 最近公共祖先_LCA 最近公共祖先
  5. mysql里的max怎么用_MySQL中的max()函数使用教程
  6. Mysql常见的面试总结
  7. 8086控制转移指令学习笔记
  8. endnote修改正文中参考文献标注_请问endnote里,如何把正文中插入参考文献处的格式由数字转为(作者,年份)?感恩!...
  9. 打印的图片不清晰_如何调节图片kb,但又不改变图片的清晰度?
  10. iphone7配置_西安苹果售后维修教您iphone7发热严重、耗电快怎么解决?