【发布时间】:2017-01-25 15:08:03
【问题描述】:
我正在尝试编写一些简单的代码来检查特定目录是否存在以及该目录是否包含任何文件。如果它存在并且它包含文件,那么我希望它做一些事情。如果没有,那么我希望它做其他事情。
我一直在使用 os 模块来执行文件浏览器操作,到目前为止,它似乎工作得很好。
if os.listdir("D:\Inventory\Joy\XL") != []: #Checks to see if the directory is empty
print("This directory is full")
else:
print("This directory is empty")
if (os.path.exists("D:\Inventory\Joy\XL")) is True: #THIS ISN'T RIGHT BUT I DON'T KNOW WHAT TO DO.
print("This directory exists")
else:
print("The directory doesn't exist")
我读到应该避免使用“如果 x == True then y”或“如果 x is True then y”,但我不知道如何(或为什么)避免它。另外,即使我想无视约定,我也不知道如何实现它。人们说这是多余的,但我又不明白为什么。我在 Stack Overflow 中阅读过有关此问题的类似条目,但我没有理解任何答案。
【问题讨论】:
-
是啊,你为什么
print-ing处于这种状态?另外,您是否尝试过从任何地方删除is True并查看发生了什么? -
is会将布尔值与布尔值进行比较,但是您从可以等同于布尔值的东西开始,因此没有任何收获,而是获得了额外的组装操作 -
print(除了打印的东西)返回None,这与True不同。不要在条件中添加调试输出。 -
如果
x是True或等于整数1,if x == True将通过。x is True仅在 x 是布尔值True时才会通过。 -
提示:您更愿意说“'Ghosti 是你的用户名'这句话是真的”还是只说“'Ghosti 是你的用户名'”? ...在代码中:
if x: y(),当你有is True或== True时,它只是多余的
标签: python python-3.x if-statement