Ich versuche, einen einfachen Code zu schreiben, der prüft, ob ein bestimmtes Verzeichnis existiert und ob dieses Verzeichnis irgendwelche Dateien enthält. Wenn es existiert und es Dateien enthält, dann möchte ich, dass es etwas tut. Wenn nicht, dann möchte ich, dass es etwas anderes macht.Wenn etwas wahr ist
Ich habe das OS-Modul verwendet, um die Datei-Explorer-Operationen durchzuführen und bis jetzt scheint es gut zu funktionieren.
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")
Ich habe gelesen, dass man vermeiden sollte „wenn x == True Then y“ oder „wenn x Wahr dann y“, aber ich weiß nicht, wie (oder warum) es zu vermeiden. Außerdem würde ich nicht wissen, wie ich es umsetzen soll, auch wenn ich die Konvention missachten wollte. Die Leute sagen, es ist überflüssig, aber ich verstehe auch nicht warum. Ich habe ähnliche Einträge in Stack Overflow zu diesem Problem gelesen, aber ich habe keine der Antworten verstanden.
Yeesh, warum sind Sie "print'-in der Bedingung? Hast du auch damit experimentiert, "is True" von überall zu entfernen und zu sehen, was passiert ist? – miradulo
'is' würde einen Booleschen Wert mit einem booleschen Wert vergleichen, aber Sie beginnen mit etwas, das einem booleschen Wert entspricht, so dass nichts gewonnen wird und Sie eine zusätzliche Assemblyoperation erhalten. – Sayse
' print' gibt (außer Druckmaterial) 'None zurück ', was nicht dasselbe wie' True' ist. Fügen Sie Ihre Debugging-Ausgabe nicht in die Bedingung ein. –