使用“模糊匹配”文件名Python读取或打开文件

2024-10-01 22:38:36 发布

您现在位置:Python中文网/ 问答频道 /正文

给定目录中的文件列表:

import os
os.listdir('system-outputs/newstest2016/ru-en')

[出来]:

^{pr2}$

然后我有了输入:

filename, suffix = 'newstest2016.AFRL-MITLL-contrast', 'ru-en'

使用文件名,如果我想做一个正则表达式匹配,以便可以读取文件newstest2016.AFRL-MITLL-contrast.4524.ru-en,我可以:

import re
fin = open(next(_fn for _fn in os.list('system-outputs/newstest2016/ru-en') if re.match(filename + '.*.' + suffix, _fn) for _fn in))

但有没有办法读取/打开“模糊匹配”文件名?一定有比上面的粗制方法更好的方法。在

假设os.listdir中应该始终有一个明确的匹配。在


Tags: 文件importos文件名rufilenameoutputssystem
2条回答

您可以按照建议使用glob,但它可以提供多个匹配项。我会采用这样的模式:

filenames = [
    'newstest2016.AFRL-MITLL-contrast.4524.ru-en',
    # ...
    'newstest2016.PROMT-Rule-based.4277.ru-en',
    'newstest2016.uedin-nmt.4309.ru-en'
]
my_filename, suffix = 'newstest2016.AFRL-MITLL-contrast', 'ru-en'
for filename in filenames:
    *fn, suff = filename.split('.')
    if ('.'.join(fn[:-1]), suff) == (my_filename, suffix):
        break
else:
    filename = None
# `filename` is now set to real file name

我使用python3.x来获得更好的语法,但这很容易移植到python2.x

我相信glob可能是个更好的方法。在

相关问题 更多 >

    热门问题