Python 检查字符串是否包含任何文件扩展名

Python 检查字符串是否包含任何文件扩展名,python,python-3.x,file-extension,Python,Python 3.x,File Extension,我相信这是一件简单的事情,但我不知道怎么做。我想要实现的是这样的目标: templateFilename = str( templateFilename ) # If no file extension is found, assume it is a .npy file if templateFilename.endswith( '.*' ): templateFilename += ".npy" file_extension = [".csv", ".xml", ".html"]

我相信这是一件简单的事情,但我不知道怎么做。我想要实现的是这样的目标:

templateFilename = str( templateFilename )

# If no file extension is found, assume it is a .npy file
if templateFilename.endswith( '.*' ):
    templateFilename += ".npy"
file_extension = [".csv", ".xml", ".html"]

if '.' in templateFilename:      #checks if you can actually split, if you can't perform a split; you would raise an index error.
    if templateFilename.split(".")[-1] in file_extension:    #[-1] = the last element in the list.
        has_extension = true
        has_verified_extension = true
    else:
        has_extension = true
        has_verified_extension = false
else:            #no '.'. in the filename, so no extension.
    has_extension = false
但是,这种语法似乎不起作用。我希望
*
表示任何文件扩展名,这样,如果解析的文件确实包含文件扩展名,则将使用该文件扩展名,但如果不包含,则将添加标准扩展名

我读过关于
glob
模块的内容,人们似乎在使用它查找
*.txt等内容,但我不确定它是如何工作的。

用法:

file_extension = [".pyo", ".npy", ".py"]
templateFilename = str( templateFilename )  
# If no file extension is found, assume it is a .npy file
if not templateFilename.split(".")[1]  in file_extension:
    templateFilename += ".npy"

我建议
os.path.splitext
。如果不存在扩展名,则以下使用
.npy
作为扩展名:

root, ext = os.path.splitext(path)
if not ext:
   ext = '.npy'
path = root + ext
(从经验和脱发说起)

上进行拆分,然后选择第二个元素
[1]
,只有在您完全可以保证文件名中没有
的情况下,才会起作用;否则,您将需要以下内容:

templateFilename = str( templateFilename )

# If no file extension is found, assume it is a .npy file
if templateFilename.endswith( '.*' ):
    templateFilename += ".npy"
file_extension = [".csv", ".xml", ".html"]

if '.' in templateFilename:      #checks if you can actually split, if you can't perform a split; you would raise an index error.
    if templateFilename.split(".")[-1] in file_extension:    #[-1] = the last element in the list.
        has_extension = true
        has_verified_extension = true
    else:
        has_extension = true
        has_verified_extension = false
else:            #no '.'. in the filename, so no extension.
    has_extension = false

如果你想在一行中,那么这里是:

templatefilename = "abcd"    
non_ext_file_list = [filename + ".npy" for filename in templateFilename.split(".") if not "." in templateFilename]

#output 
[abcd.npy]

扩展名是否等于包含
字符的文件名?列出授权文件扩展名,然后检查列表中是否有str最后的字符(按点拆分)。如果没有,请添加指定的文件扩展名。请尝试
import re
@Mathieu,我认为这可能是一个明智的方法。谢谢。这正是我要找的!考虑到这一点,我认为这是行不通的。我所在领域的人会将内容保存为他们喜欢使用的各种无意义的文件扩展名(但通常它们只是伪装的np数组),如果文件名中存在出现
的风险,只需创建一个递归函数,该函数接受在
处拆分的字符串的右部分,直到右部分不再有
。每次都会获得文件的扩展名;)