我的所有文件名都包含以下模式:
datasetname_%Y-%m-%d_%H.%M.%S.out
使用time.strftime("%Y-%m-%d_%H.%M.%S")
我想要做的是检查文件名是否已经包含时间戳,如果已经包含时间戳,请将其删除。为此,我可以使用split
。我可以使用fnmatch
来测试文件名是否包含模式。
我遇到问题的部分是找出正则表达式模式,从我正在使用的格式中提取fnmatch
。
非常感谢任何帮助和/或建议。
答案 0 :(得分:1)
我认为你可能会使它变得比它需要的更复杂。
来自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
答案 1 :(得分:1)
这最终似乎对我有用:
regexp = re.compile('_([0-9-_.]+\...)')
if regexp.search(fileName) is not None:
#Do something with the filename
我使用了基于drewk上面评论的模式(谢谢)。到目前为止,这种模式似乎有效,但可能需要进行一些调整。无论如何,它让我比我的位置更进一步。
还要感谢WombatPM。你的答案实际上帮助了我遇到的一个单独的问题。