我正在编写一个使日常流程自动化的工具,尽管执行代码时会提示我要使用哪个选项,所以我将选择选项二,然后输入目录路径,然后出现NameError尽管已定义“ newDirectory”,但未定义。
我尝试在不同的功能块中调用该函数,例如主函数和预定义的函数“ def newdirectory(directPath)”。无论在哪里调用该函数,我总是会遇到相同的错误。
if user_response == "1":
def newDirectory(directPath):
if os.path.exists(directPath) == True:
print ("The directory ", directPath, " already exists")
else:
os.mkdir(directPath)
if os.path.getsize(directPath) > 0:
print ("The directory: ", directPath, " has been successfully created")
else:
print (directPath, " has not been created")
def main():
directPath = input("Enter the directory to be created: ")
newDirectory(directPath)
我希望能够在我的工具“制作/删除目录”中执行功能而不会出错。
答案 0 :(得分:1)
您定义函数newDirectory
,但仅在运行if
语句的情况下。如果newDirectory
不是值user_response
之外的其他函数,则永远不会定义函数"1"
-永远不要将其放入命名空间中。您现在得到的NameError
是python对本地命名空间中不存在的内容的标准响应,因为它从未定义过。
通常,您不要将函数声明放在条件语句中-简单地定义函数并不意味着它一定会执行,最好将调用放在条件语句中,而不是放在条件语句中功能本身是有条件的,正是为了避免这种错误。