我有一个包含以下格式文件的目录: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/