python - 使用 fnmatch 匹配的文件名

标签 python

我有一个包含以下格式文件的目录:LnLnnnnLnnn.txt

其中 L = 字母,n = 数字。例如:p2c0789c001.txt

我想根据第二个数字(即 0789)是否在特定的数字序列(例如 0001 到 0146)内来分隔这些文件。

有没有一种简单的方法可以使用 fnmatch 来做到这一点?或者我应该使用正则表达式?

这是我到目前为止的代码:

out_files = []
for root, dirs, filenames in os.walk('.'):
   for filename in fnmatch.filter(filenames, '???[0-9][0-9][0-9][0-9]????*.txt'):
       out_files.append(os.path.join(root, filename))

最佳答案

您无法在 fnmatch.filter() 中轻松完成此操作,但您可以自己完成:

out_files = []
for root, dirs, filenames in os.walk('.'):
   for filename in fnmatch.filter(filenames, '???[0-9][0-9][0-9][0-9]????*.txt'):
       if(1 <= int(filename[3:7]) <= 146):
           out_files.append(os.path.join(root, filename))

或者,对于列表理解爱好者:

import os
import fnmatch
out_files = [os.path.join(root, filename)
             for root, dirs, filenames in os.walk('.')
             for filename in fnmatch.filter(filenames,
                                            '???[0-9][0-9][0-9][0-9]????*.txt')
             if 1 <= int(filename[3:7]) <= 146]

关于python - 使用 fnmatch 匹配的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003053/

相关文章:

python - 类型错误 : on_delete must be callable

python - smtplib.SMTPAuthenticationError : (535, '5.7.3 Authentication unsuccessful' )

python - 如何递归模拟随机游走?无循环(Python)

python - 查找numpy数组的k个最小值的索引

python - DJANGO - 使用 REST 框架在 POST 方法上使用 genericforeignkey 保存数据

python - Cython 中的这个声明是什么? cdef PyObject ** worker 。它是指向指针的指针吗?

python - mpmath 函数 hyperu 的默认精度是多少?

python - apache 用户无法写入 .python-eggs

python - 如何使Python类 "ast.literal_eval()"兼容?

javascript - 在 Selenium Python 中处理警报