使用两个变量删除文件夹内的文件夹

问题描述:

我在公司文件夹中有多个分支,然后每个分支有多个用户。我需要在离开分支时删除某些用户。我没有收到错误,但整个分支文件夹被删除,而不仅仅是指定的用户文件夹。有人能指出我在正确的方向使用两个变量删除文件夹内的文件夹

#!/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

  • 它看起来像你的rmtree()呼叫误缩进,应该大概只有在“主要”模式时运行。原样,它将始终在模块加载时运行,其中branchuser都为空。这看起来很危险。

  • 看起来您应该检查在调用rmtree()之前是否实际上从选项中获得了branchuser

+0

我做了以下更改,但似乎忽略了用户的最后%s,并且rmtree仅识别以下/ home/company /%s。有任何想法吗?是否有不同的方式列出这两个变量,以便只有用户文件夹被删除? – user1173151 2012-01-27 10:01:26