我有一个目录,其中文件的格式为: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/

10-12 22:11