Python 另一个";切片索引必须是整数或无,或具有“索引”方法;线

Python 另一个";切片索引必须是整数或无,或具有“索引”方法;线,python,Python,正在尝试调试Python脚本,并一直显示以下错误消息: Traceback (most recent call last): File "<input>", line 3, in <module> TypeError: slice indices must be integers or None or have an __index__ method 你误用了。第二个和第三个*参数是开始和结束,用于索引到字符串中,不要检查的其他字符串。默认情况下,它们都是No

正在尝试调试Python脚本,并一直显示以下错误消息:

 Traceback (most recent call last):
    File "<input>", line 3, in <module>
TypeError: slice indices must be integers or None or have an __index__ method
你误用了。第二个和第三个*参数是
开始
结束
,用于索引到字符串中,要检查的其他字符串。默认情况下,它们都是
None
,因此检查整个字符串:

>>> 'foo'[None:None]
'foo'
这解释了看似混乱的错误信息;Python正在尝试检查
文件名['.jpg':无].endswith('.jpeg')
,这显然没有任何意义。相反,要检查多个字符串,请传递一个元组作为第一个参数:

if filename.endswith((".jpeg", ".jpg")):
                   # ^ note extra parentheses
演示:

>>'test.jpg'.endswith('.jpg',.jpeg'))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
'test.jpg'.endswith('.jpg','.jpeg'))
TypeError:切片索引必须是整数或无,或具有_索引_方法
>>>'test.jpg'.endswith(('.jpg','.jpeg'))
真的

*(或者第三个和第四个,如
instance.method(arg)
可以编写
Class.method(instance,arg)

这是您的全部代码吗?
str.endswith
需要一个元组而不是多个参数。您好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是命名和的部分。更重要的是,请阅读。StackOverflow并不是真正的讨论线程,它是清晰的问题和清晰的答案。讨论通常是为了澄清提问者是否不够清楚的问题。@wombatb不,你没有-回溯缺少导致错误的实际行,这会使人们更容易找出问题的真正原因。此外,代码也没有尽可能短-我的回答表明,一行代码就足以复制错误,您应该尝试将代码缩减为该错误。谢谢:就是这样。@wombatb
if filename.endswith((".jpeg", ".jpg")):
                   # ^ note extra parentheses
>>> 'test.jpg'.endswith('.jpg', '.jpeg')

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    'test.jpg'.endswith('.jpg', '.jpeg')
TypeError: slice indices must be integers or None or have an __index__ method
>>> 'test.jpg'.endswith(('.jpg', '.jpeg'))
True