免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2709 | 回复: 2
打印 上一主题 下一主题

大家一起来找茬——修改代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-22 19:03 |只看该作者 |倒序浏览
小弟刚学Python不久,写了个小程序,是删除目录下的大文件用的。希望大家能帮帮忙,提点宝贵意见。


#!/usr/bin/env python
#-*- coding:utf8 -*-

#删除某目录下所有的文件大小大于K字节的普通文件
#os.argv[1] 指定目录
#os.argv[2] 指定大小

import os,sys
from stat import *

def usage():
        print './rm_size /xx/xx/xx kkk'

def perror(msg):
        sys.stderr.write(msg);
        sys.exit(-1)

#检查参数
def int_check(param):
        try:
                num = int(sys.argv[2])
        except ValueError:
                perror('not a legal num\n')

def path_check(param):
        if (False == os.path.isdir(param)):
                perror("the path do not exist\n")

def check_params():
        if 3 != len(sys.argv):
                perror('params size not right\n')
        path_check(sys.argv[1])
        int_check(sys.argv[2])

def filetype_check(file):
        try:
                st = os.stat(file)
                if S_ISREG(st[ST_MODE]):
                        return True
        except:
                return False
        return False

if __name__ == '__main__':
        check_params()                        #不符合要求的参数导致程序直接推出
        dirpath = sys.argv[1]
        size = int(sys.argv[2])
        filenames = os.listdir(dirpath)
        for temp in filenames :
                filepath = os.path.join(dirpath, temp);
                if not filetype_check(filepath):
                        continue;
                filesize = os.path.getsize(filepath)
                print filesize, size
                if filesize > size:
                        # os.remove();         这个函数太危险,也不说一声
                        os.system('rm -i ' + filepath)  

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [报告]
发表于 2014-02-22 20:45 |只看该作者
可以用find命令检查自己的实现是否正确:查找当前目录,所有大于等于1024字节的普通文件,然后确认是否rm,按需调整目录和文件大小。
  1. bash-3.2 $find $(PWD) -type f -size +1024c -ok rm {} \;
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-02-22 21:10 |只看该作者
自己试过这种办法,这里只是为了练习Python的编程。它提供了直接调用系统命令的方法,自己也提供了相应的接口函数(比如,rm),这样确实让Python脚本能在多个平台下保持正确的输出。那么Python还有哪些超能力啊?回复 2# timespace


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP