python获取扩展文件:splitext vs endswith

mos*_*mos 3 python

我想知道,这是获取文件扩展名并检查其是否属于列表的更好方法。

name, ext = os.path.splitext(filename)
return ext == ".pdf" # an example
Run Code Online (Sandbox Code Playgroud)

要么

return filename.endswith(".pdf")
Run Code Online (Sandbox Code Playgroud)

Ste*_*ers 5

这是使用两种方法检查文件名是否包含任何扩展名的两个示例。

ext = ('.txt', '.py', '.docx', '.pdf') # tuple of extensions.

filenames = [ ... ] # list of filename strings
ends_matches = [ f for f in filenames if f.endswith(ext) ]

# change ext to set for slightly better efficiency.
split_matches = [ f for f in filenames if f.splitext()[1] in ext ]

# may need to include .lower() for cases with capital extensions.
Run Code Online (Sandbox Code Playgroud)

在这种情况下,取决于您的实际使用情况。如果您只想检查一个文件扩展名,则建议使用endswith

return filename.endswith(extension)
Run Code Online (Sandbox Code Playgroud)


Woo*_*e88 1

第二个是更干净、更短的解决方案,我想说的是,如果您只需要检查特定的扩展名。两者甚至都适用于特殊情况,例如 filename = abc.def.pdf

如果您稍后需要以某种方式处理文件名和/或扩展名,第一个更好。