所以我是python的新手,我有一个函数需要分为两部分。以前,它是一个功能,但是在一个比我了解得多的人的建议下,我被提示我的功能做得太多,我需要将其分解为两部分:所以我在这里。
下面是分成两部分的代码。
我想知道我是否必须在两个函数中都提到name
?
这应该做的是检查文件是否存在,然后检查文件是否存在,然后运行第二个功能以删除实际目录。
pathlist
答案 0 :(得分:3)
不完全是。如果要将整个路径列表传递到remove_directory
,则将尝试删除每个路径列表(无论是否存在),从而使check_directory功能不再需要。我认为您的意思是在check_directory函数中仅将存在的路径传递给remove_directory:
def check_directory(pathslist):
for path in pathslist:
if os.path.exists(path) and os.path.isdir(path):
remove_directory(path)
dirs_to_delete = [
'C:\MyDirectoryPath1',
'C:\MyDirectoryPath2',
'C:\MyDirectoryPath3'
]
def remove_directory(path):
shutil.rmtree(path)
print(colored('Found ' + path + ' removing', 'green'))
您可能想尝试为编写的每个函数编写注释以描述其功能。第二个您使用单词“和”或其他动词,这暗示您最好将函数拆分为多个部分(这只是经验法则,不是绝对的)。此外,您还希望避免重复代码-如果在两个单独的函数中有相同的代码行,则这是您需要重新考虑设计的另一提示。
编辑:如评论所指出,您的编写方式意味着调用check_directory
将删除该目录(如果存在)。期望有人会因为不想删除它的其他原因而打电话给check_directory
似乎是合理的,并且最好让remove_directory
打电话给check_directory
而不是相反: / p>
def check_directory(path):
# returns true if path is an existing directory
return os.path.exists(path) and os.path.isdir(path)
def remove_directory(pathlist):
for path in pathlist:
if check_directory(path):
shutil.rmtree(path)
print(colored('Found ' + path + ' removing', 'green'))