Python 字符串比较失败

Python string comparison failing

small Python prog' 通过匹配扩展名对下载文件夹进行排序,
我在下面得到一个错误的(在我看来)字符串匹配。 我进行了搜索,但似乎只找到了有关 REGEX 匹配或更复杂内容的问题!

分离扩展

for filename in os.listdir(src_base_folder):
orig_title, orig_ext = os.path.splitext(filename)

小写以便于匹配并去除前导“.”
我怀疑我的问题不知何故在这里..

extension = str.lower(orig_ext)[1:]

下面的测试对除“S22F350FH.icm”以外的所有内容都工作正常, 用于设置显示器的配色方案文件。

我打印出显示为“icm”的“扩展名”,但 我得到的是假匹配 在此代码中针对各种图像类型的扩展:

if extension == "jpg" or "jpeg" or "png" or "gif" or "bmp":  

感谢您的想法。

而不是 if extension == "jpg" or "jpeg" or "png" or "gif" or "bmp",您应该使用:

if extension in ["jpg", "jpeg", "png", "gif", "bmp"]:

解释器按如下方式处理条件:

if expr_1 or expr_2 or expr_3:

更简洁,

if (expr_1) or (expr_2) or (expr_3)

正在评估您的程序,解释器将 if extension == "jpg" or "jpeg" or "png" or "gif" or "bmp" 视为:

if (extension == "jpg") or ("jpeg") or ("png") or ("gif") or ("bmp"):

由于 non-empty 字符串为真值,因此其计算结果始终为 True。相反,使用@Mayank 建议的 if extension in ["jpg", "jpeg", "png", "gif", "bmp"]:.