我想检查目录中是否有与特定表达式匹配的文件。我的文件名由标识符和附加的单个字母组成。
此外,它们可以用_
,-
之类的符号分隔。
例如:对于给定的标识符AC1C
和符号A
,我想检查是否有名为的文件:
ac1cA.txt
ac1c-A.txt
ac1c_A.txt
AC1CA.txt
AC1C-A.txt
AC1C_A.txt
但不是:
ac1c-a.txt
我宁愿用某种正则表达式检查它,而不是分别检查六个条件。我正在使用python 2.7
答案 0 :(得分:0)
您可以使用此正则表达式检查目录中匹配的文件
!pathexe!
答案 1 :(得分:0)
您可以尝试以下代码
import re
string_sample = '''ac1cA.txt
ac1c-A.txt
ac1c_A.txt
AC1CA.txt
AC1C-A.txt
AC1C_A.txt'''
pattern = '[Aa][Cc][0-9][cC][-_]?A\.txt'
print re.findall(pattern, string_sample)
答案 2 :(得分:0)
如果您的文件位于files_dir
:
import os
import re
import glob
def fmatch(id, symb, filenames):
""" Determine if a file containing ID and symb exists in filenames."""
patt = '{}|{}[-_]?{}'.format(id.upper(), id.lower(), symb)
return any((re.match(patt, os.path.basename(filename)) for filename in filenames))
files_dir = 'testdir'
# List of .txt files in files_dir
filenames = glob.glob(os.path.join(files_dir,'*.txt'))
id, symb = 'ac1c', 'A'
print fmatch(id, symb, filenames)