-1

我所有的文件名都包含以下模式:

datasetname_%Y-%m-%d_%H.%M.%S.out

时间戳是使用添加的time.strftime("%Y-%m-%d_%H.%M.%S")

我想要做的是检查文件名是否已包含时间戳,如果包含,则将其删除。为此,我可以使用split. 我可以fnmatch用来测试文件名是否包含模式。

fnmatch我遇到问题的部分是从我使用的格式中找出正则表达式模式。

任何帮助和/或建议将不胜感激。

4

2 回答 2

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
于 2013-09-11T03:43:37.000 回答
1

这最终似乎对我有用:

regexp = re.compile('_([0-9-_.]+\...)')
if regexp.search(fileName) is not None:
    #Do something with the filename

我使用了基于上面drawk评论的模式(谢谢)。到目前为止,该模式似乎有效,但可能需要一些调整。无论如何,它让我比我现在更进一步。

还要感谢 WombatPM。您的回答实际上有助于解决我遇到的另一个问题。

于 2013-09-11T05:09:50.680 回答