ファイル名を表す文字列がありますが、一度にいくつかの条件に対してチェックするにはどうすればよいですか? 私はもう試した
if r'.jpg' or r'.png' not in singlefile:
しかし、常に誤検知が発生し続けました。
ファイル名を表す文字列がありますが、一度にいくつかの条件に対してチェックするにはどうすればよいですか? 私はもう試した
if r'.jpg' or r'.png' not in singlefile:
しかし、常に誤検知が発生し続けました。
あなたのコードは次と同じです:
if (r'.jpg') or (r'.png' not in singlefile):
あなたは、おそらく、探している:
if r'.jpg' not in singlefile or r'.png' not in singlefile:
または
if any(part not in singlefile for part in [r'.jpg', r'.png']):
Tim Pietzcker に感謝します。
彼(あなた)は実際に(おそらく)欲しがっている
if not any(singlefile.endswith(part) for part in [r'.jpg', r'.png']) # ^^^^^^^^
これは優先順位のためです。次のコードは意味します。
# r'.jpg' is constant
if r'.jpg' or (r'.png' not in singlefile):
一定の場合、また.png
はない場合singlefile
。定数は常に true であるため、式は常に true です。
代わりに、正規表現を使用して、パターンに適合する文字列を確認できます。
import re
if re.match(r"\.(?:jpg|png)$", singlefile):
問題は、論理 OR が定数と変数をチェックしているという事実にあります。
r'.png'
は常に True と評価されるため、あなたor
も true になります。
そのように、両方をチェックする必要があります
if r'.png' not in singlefile or 'r.jpg' not in singlefile:
#do stuff
これを試して:
if r'.jpg' not in singlefile or r'.png' not in singlefile: