我想知道,这是获取文件扩展名并检查其是否属于列表的更好方法。
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)
这是使用两种方法检查文件名是否包含任何扩展名的两个示例。
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)
第二个是更干净、更短的解决方案,我想说的是,如果您只需要检查特定的扩展名。两者甚至都适用于特殊情况,例如 filename = abc.def.pdf。
如果您稍后需要以某种方式处理文件名和/或扩展名,第一个更好。