#python-3.x
#python-3.x
Вопрос:
Допустим, у меня есть 3 файла в моей папке / path1 / :
fb.1.1_cluster_0003_model
fb.2.2_cluster_0001_model
fb.1.5_cluster_0002_model
И я хотел бы открыть каждый из них в зависимости от списка:
liste = ["cluster_0001","cluster_0003","cluster_0002"]
итак, что-то вроде :
for i in liste:
file = open("/path1/fb.[0-1].[0-1]_" i "_model")
но я не знаю, как справиться с тем фактом, что number.number может измениться в любое время и отличаться в каждом i.
У кого-нибудь есть идея? Спасибо.
Ответ №1:
Используя регулярное выражение.
Пример:
import re
import os
#os.listdir(Your_path)
dir_list = ["fb.1.1_cluster_0003_model", "fb.2.2_cluster_0001_model", "fb.1.5_cluster_0002_model"]
liste = ["cluster_0001","cluster_0003","cluster_0002", "cluster_0000"]
pattern = "(" "|".join(liste) ")"
for filename in dir_list:
if re.search(pattern, filename):
with open(os.path.join("path1", filename)) as infile:
data = infile.read()
Комментарии:
1. Здравствуйте, у меня нет доступа к dir_list это просто пример, number.number изменится в любое время.
Ответ №2:
Вы можете поместить только номер в список (может быть полезно, если вы хотите использовать диапазон, например) и сопоставить их с регулярным выражением:
import re
import os
dir_list = ["fb.1.1_cluster_0003_model", "fb.2.2_cluster_0001_model", "fb.1.5_cluster_0002_model"]
liste = ["0001","0003","0002","0000"]
reg = re.compile("cluster_(?P<cluster_num>d )_model")
for filename in dir_list:
match = reg.search(filename).groupdict()
if 'cluster_num' in match.keys():
if match['cluster_num'] in liste:
with open(os.path.join("path1", filename)) as infile:
data = infile.read()