- 此问题在此处已有答案**:
Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of those?(8个答案)
Check if string ends with one of the strings from a list(7个答案)
两年前关闭了。
一个小的Python程序,通过匹配扩展名对下载文件夹进行排序,
我在下面得到了一个假的(在我看来)字符串匹配。我搜索了一下,但似乎只找到了关于正则表达式匹配的问题,或者更复杂的东西!
分离延伸导线
for filename in os.listdir(src_base_folder):
orig_title, orig_ext = os.path.splitext(filename)
小写以便于匹配,并去掉开头的""。
我怀疑我的问题就在这里。
extension = str.lower(orig_ext)[1:]
除了"S22F350FH.icm"(一个用于设置显示器的配色方案文件)之外,下面的测试对所有内容都运行良好。
我打印出了"extension",显示为"icm",但是我在此代码中得到了一个FALSE匹配,与各种图像类型的扩展名相匹配:
if extension == "jpg" or "jpeg" or "png" or "gif" or "bmp":
感谢你的想法。
2条答案
按热度按时间mrphzbgm1#
您应该使用以下命令,而不是
if extension == "jpg" or "jpeg" or "png" or "gif" or "bmp"
:qacovj5a2#
解释器按如下方式处理条件:
更准确地说,
在评估程序时,解释器将
if extension == "jpg" or "jpeg" or "png" or "gif" or "bmp"
视为:因为非空字符串是真实的,所以它的计算结果总是
True
,而使用@Mayank建议的if extension in ["jpg", "jpeg", "png", "gif", "bmp"]:
。