找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14301|回复: 2

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

[复制链接]
发表于 2016-6-22 14:35:22 | 显示全部楼层 |阅读模式
本帖最后由 元芳你怎么看 于 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.        
  21.         # print "file_name的值包括:"
  22.         # for file in file_name:
  23.                 # print file
  24.        
  25.         file_mtime = {}
  26.         for file in file_name:
  27.                 mtime=os.path.getmtime(file)
  28.                 file_mtime[mtime] = file   #生成一个以修改时间为键,以文件绝对路径为值的字典
  29.                        
  30.         return file_mtime   
  31.        
  32.        
  33. def check_time():
  34.         file_mtime = check_file()
  35.         # print "该目录下的文件:"
  36.         # for file in file_name:
  37.                 # print "%s" % file
  38.         print '*' * 50
  39.                
  40.         # file_mtime = {}
  41.         # for file in file_name:
  42.                 # mtime=os.path.getmtime(file)
  43.                 # file_mtime[mtime] = file   #生成一个以修改时间为键,以文件绝对路径为值的字典
  44.                
  45.         file_mtime_keys = file_mtime.keys()
  46.         file_mtime_keys.sort(reverse=True)
  47.         length = len(file_mtime_keys)

  48.         if length>10:
  49.                 for i in range(10,length):
  50.                         print file_mtime[file_mtime_keys[i]]
  51.                 try:
  52.                         inputcontent = raw_input ("是否要删除以上文件:y/n \n")               
  53.                         if inputcontent == 'y':
  54.                                 for i in range(10,length):
  55.                                         os.remove(file_mtime[file_mtime_keys[i]])
  56.                         elif inputcontent == 'n':
  57.                                 print "程序中断"
  58.                         else:
  59.                                 print '-' * 50
  60.                                 print "\n请输入正确的值:(y/n)\n"
  61.                                 print '-' * 50,"\n"
  62.                                 check_time()
  63.                 except KeyboardInterrupt:
  64.                         print "\n 程序中断 "
  65.                 # except ValueError:
  66.                         # print "请输入正确的值:(y/n)"
  67.                 # else:
  68.                         # print '-' * 50
  69.                         # print "\n请输入正确的值:(y/n)\n"
  70.                         # print '-' * 50,"\n"
  71.                         # check_time()

  72.                
  73. if __name__ == '__main__':
  74.         check_time()
  75.         # check_file()
  76.                        

复制代码

评分

参与人数 2技术 +2 收起 理由
happy886rr + 1 1
codegay + 1 1

查看全部评分

 楼主| 发表于 2016-6-22 14:40:49 | 显示全部楼层
思路:先把脚本所在目录下的文件的修改时间和文件名做成一个字典,以修改时间为键,以文件的绝对路径和文件名为值;然后根据字典的键值排序,删除旧的压缩包。
请各位大侠指教一下,看看有什么不妥和简化的思路。
发表于 2016-6-22 17:33:08 | 显示全部楼层
思路不错代码也写得很好。
一般在双击运行或者IDLE 中F5运行的时候getcwd得到是脚本所在目录。

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

参考
http://blog.chinaunix.net/uid-21961132-id-159389.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:48 , Processed in 0.017725 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表