2012-01-27 172 views
0

我在公司文件夾中有多個分支,然後每個分支有多個用戶。我需要在離開分支時刪除某些用戶。我沒有收到錯誤,但整個分支文件夾被刪除,而不僅僅是指定的用戶文件夾。有人能指出我在正確的方向使用兩個變量刪除文件夾內的文件夾

#!/usr/bin/python 
import os, sys, getopt, shutil 
branch, user = "","" 

if __name__ == "__main__": 
    argv = sys.argv[1:] 
    try: 
     opts, args = getopt.getopt(argv, 'hd:e', ['help', 'branch=', 'user=']) 
    except getopt.GetoptError: 
     print __doc__ 
     sys.exit() 

    for opt, arg in opts: 
     if opt in ('-h', '--help'): 
      print __doc__ 
      sys.exit() 
     if opt in ('-d', '--branch'): 
      branch = arg 
     if opt in ('-e', '--user'): 
      user = arg 

shutil.rmtree("/home/company/%s/%s" % (branch , user)) 
+0

這聽起來像你的'用戶'變量沒有被設置。考慮添加一個明確的檢查或斷言來確保'user!=「」'。 – Amber 2012-01-27 09:24:26

+0

就像它在這裏,你有一個非常有趣的「不該做什麼」的例子,因爲帶有這個縮進的rmtree將簡單地刪除整個「/ home/company ///」樹,如果這個模塊被導入 - 例如,如果在交互式Python控制檯 – jsbueno 2012-01-27 11:43:35

+0

中錯誤地鍵入「import 」,那麼您是否對如何執行此操作有任何建議?我的編碼技能是最小的,所以我在這裏做錯誤試驗 – user1173151 2012-01-27 12:26:24

回答

0
  • 它看起來像你的rmtree()呼叫誤縮進,應該大概只有在「主要」模式時運行。原樣,它將始終在模塊加載時運行,其中branchuser都爲空。這看起來很危險。

  • 看起來您應該檢查在調用rmtree()之前是否實際上從選項中獲得了branchuser

+0

我做了以下更改,但似乎忽略了用戶的最後%s,並且rmtree僅識別以下/ home/company /%s。有任何想法嗎?是否有不同的方式列出這兩個變量,以便只有用戶文件夾被刪除? – user1173151 2012-01-27 10:01:26