我所有的文件名都包含以下模式:
datasetname_%Y-%m-%d_%H.%M.%S.out
时间戳是使用添加的time.strftime("%Y-%m-%d_%H.%M.%S")
我想要做的是检查文件名是否已包含时间戳,如果包含,则将其删除。为此,我可以使用split
. 我可以fnmatch
用来测试文件名是否包含模式。
fnmatch
我遇到问题的部分是从我使用的格式中找出正则表达式模式。
任何帮助和/或建议将不胜感激。
我认为您可能使这比需要的更复杂。
来自 python 文档http://docs.python.org/2/library/fnmatch.html
该模块提供对 Unix shell 样式通配符的支持,这与正则表达式(在 re 模块中记录)不同。
如果您的数据集名称是derf,则示例变为:
import fnmatch
import os
dsn = 'derf_'
for file in os.listdir('.'):
if fnmatch.fnmatch(file, dsn+'*.out'):
print file
这最终似乎对我有用:
regexp = re.compile('_([0-9-_.]+\...)')
if regexp.search(fileName) is not None:
#Do something with the filename
我使用了基于上面drawk评论的模式(谢谢)。到目前为止,该模式似乎有效,但可能需要一些调整。无论如何,它让我比我现在更进一步。
还要感谢 WombatPM。您的回答实际上有助于解决我遇到的另一个问题。