返回列表 发帖

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

本帖最后由 元芳你怎么看 于 2016-6-22 14:36 编辑
#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
# coding:utf-8
'''
功能:保留当前目录下最新的十个文件,删除其他旧文件
Author : Randy
'''
import string,os,os.path
dir = os.getcwd()  #获取脚本所在目录
print "脚本所在的目录:%s" % dir
def check_file():
dir_name = os.listdir(dir)  #脚本目录下的文件和目录名
file_name = []
length = len(dir_name)
for i in range(length):      
if os.path.isfile(dir_name[i]) and dir_name[i].rfind('.war')>0:  #判断是否是文件
# print dir_name[i]
file_name.append(os.path.join(dir,dir_name[i]))    #循环结束后生成一个绝对路径+文件名的列表
# print "哈哈,调用我了,我把是文件的列表发给你呀"
# print "file_name的值包括:"
# for file in file_name:
# print file
file_mtime = {}
for file in file_name:
mtime=os.path.getmtime(file)
file_mtime[mtime] = file   #生成一个以修改时间为键,以文件绝对路径为值的字典
return file_mtime   
def check_time():
file_mtime = check_file()
# print "该目录下的文件:"
# for file in file_name:
# print "%s" % file
print '*' * 50
# file_mtime = {}
# for file in file_name:
# mtime=os.path.getmtime(file)
# file_mtime[mtime] = file   #生成一个以修改时间为键,以文件绝对路径为值的字典
file_mtime_keys = file_mtime.keys()
file_mtime_keys.sort(reverse=True)
length = len(file_mtime_keys)
if length>10:
for i in range(10,length):
print file_mtime[file_mtime_keys[i]]
try:
inputcontent = raw_input ("是否要删除以上文件:y/n \n")
if inputcontent == 'y':
for i in range(10,length):
os.remove(file_mtime[file_mtime_keys[i]])
elif inputcontent == 'n':
print "程序中断"
else:
print '-' * 50
print "\n请输入正确的值:(y/n)\n"
print '-' * 50,"\n"
check_time()
except KeyboardInterrupt:
print "\n 程序中断 "
# except ValueError:
# print "请输入正确的值:(y/n)"
# else:
# print '-' * 50
# print "\n请输入正确的值:(y/n)\n"
# print '-' * 50,"\n"
# check_time()
if __name__ == '__main__':
check_time()
# check_file()
COPY
2

评分人数

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

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

参考
http://blog.chinaunix.net/uid-21961132-id-159389.html
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

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

TOP

返回列表