Board logo

标题: [原创代码] python2,保留脚本所在目录下最新的十个文件,删除其他旧文件 [打印本页]

作者: 元芳你怎么看    时间: 2016-6-22 14:35     标题: python2,保留脚本所在目录下最新的十个文件,删除其他旧文件

本帖最后由 元芳你怎么看 于 2016-6-22 14:36 编辑
  1. #!/usr/bin/env python2
  2. # -*- coding: UTF-8 -*-
  3. # coding:utf-8
  4. '''
  5. 功能:保留当前目录下最新的十个文件,删除其他旧文件
  6. Author : Randy
  7. '''
  8. import string,os,os.path
  9. dir = os.getcwd()  #获取脚本所在目录
  10. print "脚本所在的目录:%s" % dir
  11. def check_file():
  12. dir_name = os.listdir(dir)  #脚本目录下的文件和目录名
  13. file_name = []
  14. length = len(dir_name)
  15. for i in range(length):      
  16. if os.path.isfile(dir_name[i]) and dir_name[i].rfind('.war')>0:  #判断是否是文件
  17. # print dir_name[i]
  18. file_name.append(os.path.join(dir,dir_name[i]))    #循环结束后生成一个绝对路径+文件名的列表
  19. # print "哈哈,调用我了,我把是文件的列表发给你呀"
  20. # print "file_name的值包括:"
  21. # for file in file_name:
  22. # print file
  23. file_mtime = {}
  24. for file in file_name:
  25. mtime=os.path.getmtime(file)
  26. file_mtime[mtime] = file   #生成一个以修改时间为键,以文件绝对路径为值的字典
  27. return file_mtime   
  28. def check_time():
  29. file_mtime = check_file()
  30. # print "该目录下的文件:"
  31. # for file in file_name:
  32. # print "%s" % file
  33. print '*' * 50
  34. # file_mtime = {}
  35. # for file in file_name:
  36. # mtime=os.path.getmtime(file)
  37. # file_mtime[mtime] = file   #生成一个以修改时间为键,以文件绝对路径为值的字典
  38. file_mtime_keys = file_mtime.keys()
  39. file_mtime_keys.sort(reverse=True)
  40. length = len(file_mtime_keys)
  41. if length>10:
  42. for i in range(10,length):
  43. print file_mtime[file_mtime_keys[i]]
  44. try:
  45. inputcontent = raw_input ("是否要删除以上文件:y/n \n")
  46. if inputcontent == 'y':
  47. for i in range(10,length):
  48. os.remove(file_mtime[file_mtime_keys[i]])
  49. elif inputcontent == 'n':
  50. print "程序中断"
  51. else:
  52. print '-' * 50
  53. print "\n请输入正确的值:(y/n)\n"
  54. print '-' * 50,"\n"
  55. check_time()
  56. except KeyboardInterrupt:
  57. print "\n 程序中断 "
  58. # except ValueError:
  59. # print "请输入正确的值:(y/n)"
  60. # else:
  61. # print '-' * 50
  62. # print "\n请输入正确的值:(y/n)\n"
  63. # print '-' * 50,"\n"
  64. # check_time()
  65. if __name__ == '__main__':
  66. check_time()
  67. # check_file()
复制代码

作者: 元芳你怎么看    时间: 2016-6-22 14:40

思路:先把脚本所在目录下的文件的修改时间和文件名做成一个字典,以修改时间为键,以文件的绝对路径和文件名为值;然后根据字典的键值排序,删除旧的压缩包。
请各位大侠指教一下,看看有什么不妥和简化的思路。
作者: codegay    时间: 2016-6-22 17:33

思路不错代码也写得很好。
一般在双击运行或者IDLE 中F5运行的时候getcwd得到是脚本所在目录。

如果是在命令行下执行的话。getcwd得到的不是脚本文件所在的目录。
而命令行默认初始路径很有可能就是system32这样重要的系统目录。

参考
http://blog.chinaunix.net/uid-21961132-id-159389.html




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2