|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 1034|回復: 0
打印 上一主題 下一主題

用Python写的一个小小的回收站定时清空程序

[複製鏈接]

25

主題

0

好友

294

積分

小學生

Rank: 2

  • TA的每日心情
    開心
    2023-8-10 12:40
  • 簽到天數: 131 天

    [LV.7]常住居民III

    推廣值
    0
    貢獻值
    0
    金錢
    627
    威望
    294
    主題
    25
    樓主
    發表於 2013-12-19 00:37:10

    刚学一段时间的python,突然想写个小程序来实践下,刚好处于系统管理的岗位,想到我们在管理Linux系统的时候经常会因为使用rm这个命令的失误而导致各种悲剧的事发生。
      那么我的想法是,首先,需要在系统的用户初始化环境配置文件中将rm命令别名下:
    alias rm='mv --verbose -f --backup=numbered --target-directory /tmp/trash'

    系统添加这个操作后使用rm命令删除的文件都会被保存在/tmp/trash此目录下,这就相当于我们Windows当中的回收站了,只是我们需要定时去清理这个回收站
    所以下面这段python程序就是为解决此道而行:
    #!/usr/bin/python
    #coding:utf8
    #清除回收站中的文件
    import os
    log_path = '/tmp/test.log'
    trash_path = '/tmp/trash'
    file_list = []
    def write_log(log_path,file_list):
        open_file = open(log_path,'a')
        open_file.write('delete file success:\n')
        open_file.writelines(file_list)
        open_file.close()
                            
    def cleartrash(trash_path):
        if os.path.exists(trash_path) and os.path.isdir(trash_path):
            for root,dirs,files in os.walk(trash_path,topdown=False):
                for filename in files:
                    file_list.append(os.path.join(root,filename)+'\n')
                    os.remove(os.path.join(root,filename))
                for dirname in dirs:
                    os.rmdir(os.path.join(root,dirname))
            print file_list
            write_log(log_path,file_list)
                               
    cleartrash(trash_path)

    代码中定义两个方法,一个用于删除文件,一个用于写日志,可以将日志追加写到message文件中,方便系统管理员查看。只要将程序放到计划任务中执行就OK了。


    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-11-1 07:19 , Processed in 0.013146 second(s), 16 queries , Gzip On, Memcache On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部