使用两个变量删除文件夹内的文件夹
问题描述:
我在公司文件夹中有多个分支,然后每个分支有多个用户。我需要在离开分支时删除某些用户。我没有收到错误,但整个分支文件夹被删除,而不仅仅是指定的用户文件夹。有人能指出我在正确的方向使用两个变量删除文件夹内的文件夹
#!/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))
答
它看起来像你的
rmtree()
呼叫误缩进,应该大概只有在“主要”模式时运行。原样,它将始终在模块加载时运行,其中branch
和user
都为空。这看起来很危险。看起来您应该检查在调用
rmtree()
之前是否实际上从选项中获得了branch
和user
。
+0
我做了以下更改,但似乎忽略了用户的最后%s,并且rmtree仅识别以下/ home/company /%s。有任何想法吗?是否有不同的方式列出这两个变量,以便只有用户文件夹被删除? – user1173151 2012-01-27 10:01:26
这听起来像你的'用户'变量没有被设置。考虑添加一个明确的检查或断言来确保'user!=“”'。 – Amber 2012-01-27 09:24:26
就像它在这里,你有一个非常有趣的“不该做什么”的例子,因为带有这个缩进的rmtree将简单地删除整个“/ home/company ///”树,如果这个模块被导入 - 例如,如果在交互式Python控制台 – jsbueno 2012-01-27 11:43:35
中错误地键入“import”,那么您是否对如何执行此操作有任何建议?我的编码技能是最小的,所以我在这里做错误试验 –
user1173151
2012-01-27 12:26:24