2017-01-25 16 views
-5

私は、特定のディレクトリが存在するかどうかを確認し、そのディレクトリにファイルが含まれているかどうかを確認する簡単なコードを記述しようとしています。それが存在し、ファイルが含まれている場合、私は何かをしたい。そうでなければ、私はそれが他の何かをしたい。何かが真の場合

私はファイルエクスプローラの操作を実行するために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") 

私は1つの使用を避けるべきであると読んだ「もしX == trueの場合、Y」または「xが、その後真yのであれば」、私はそれを回避する方法(または、なぜ)か分かりません。また、私が大会を暴行したかったとしても、それをどうやって実現するかは分かりません。人々はそれが重複していると言いますが、再び、私は理由を理解しません。私はこの問題についてはスタックオーバーフローの類似のエントリを読んだが、私は答えのいずれかを理解していない。

+3

Yeesh、なぜあなたはその状態で 'プリントしていますか?また、どこからでも 'is True'を取り除いて何が起こったのか見てみましたか? – miradulo

+1

'is'はブール値をブール値と比較しますが、ブール値と等しい値で始まるので、何も得られず、余分なアセンブリ操作を得ることになります – Sayse

+4

' print'(印刷物以外)は 'None 'これは' True'と同じではありません。この状態でデバッグ出力を追加しないでください。 –

答えて

0

私は「× がtrueの場合、yのであれば」、私はそれを回避する方法(または理由)を知らないか「x == trueの場合、yの場合、」1は使用を避ける必要があることを読みました。

好みのスタイルは、次のようになります。

foo = False 
bar = True 
if foo: 
    print "Foo!" 
elif bar: 
    print "Bar!" 
else: 
    print "Someone broke logic!" 

それは冗長で、「真である」避けるので、このスタイルが好まれます。

人々は、それは冗長だがブール値のコンテキスト、e is True == eで評価、任意の式eのため、それは冗長である理由

、再び、私は理解していない。と言います「ブール値のコンテキストで評価」とは、式の値が「Falsey」の値のいずれかであるかどうかをテストすることを意味します。[False, None, [], {}, "", 0]これらの値のいずれかである場合、結果はFalseです。そうでなければ、それはTrueです。

+0

主な問題は彼がその状態で印刷していることです。 – Max

+0

@Maxここには多くの問題があります。 –

+0

明らかに私はまだそれを学んでいるので、Pythonがどのように動作していたかを確かめるためにそれを印刷しました。 Jon Kiparskyは、冗長性については、評価時に条件が真だったとは思わなかった。それは私にとって全く直感的ではありません。それにもかかわらず、私はそれが今の場合だと理解しています。ありがとうございました。 私はコードに問題があることを十分に理解していますが、経験豊富な人が修正できるように、コードを含めました。私はそれが私にとって意味をなさない方法でそれを書いた。私はまだそれを行う最善の方法を理解しようとしています。 – Ghoti

1

リストが空でないことをテストするための慣用的な方法は、真の値としてfalseの値と非空のリストとして空のリストを扱う

if os.listdir("D:\Inventory\Joy\XL"): 

です。

os.path.existsはブール値を返しますので、何かを実行する必要はありません。単に別のブール値を返すだけです。あなたはすでにそれを持っています。 Trueの値をTrueと比較すると、Trueが返されます。 FalseTrueと比較すると、Falseが返されるので、元の入力を取り戻すだけです。

if os.path.exists("D:\Inventory\Joy\XL"): 
+0

はい。私は十分に慎重にオリジナルを読まなかった。 – chepner

関連する問題