2015-02-09 1 views
0

Я пытаюсь использовать операторы if для проверки наличия конкретной строки, которая также имеет одно имя файла. Тем не менее, я столкнулся с двумя строками, которые имеют общие символы, и я хотел бы строго не проверять дубликаты. Вот часть моего кода. У меня есть два файла с именем p_rgh_0 и h_0.Строки, содержащие повторяющиеся символы для операторов if в Python

for path, dirs, files in os.walk(logsDir, topdown=False): 
for lf in sorted(files): 
    if (plot_pressure or plot_all): 
     if any((filename in lf) for filename in ('p_0', 'p_rgh_0')): 
      logFile = os.path.join(path, lf) 
      data = np.loadtxt(logFile) 
      time, value = data[:,0], data[:,1] 
      (time, value, lf) = pressure(time, value, lf) 
    if (plot_enthalpy): 
     if any((filename in lf) for filename in ('h_0')): 
      print lf 
      logFile = os.path.join(path, lf) 
      data = np.loadtxt(logFile) 
      time, value = data[:,0], data[:,1] 
      (time, value, lf) = enthalpy(time, value, lf) 

Теперь, поскольку h_0 общая строка, как файлы обрабатываются во втором if заявление, где я проверяю исключительно только для h_0. print lf печатает оба файла, однако он должен быть только h_0. Есть ли способ устранить это поведение и проверить только на h_0?

+0

Можете ли вы проверить, используя '==' вместо 'in', или действительно есть случаи, когда вам нужна подстрока имени файла для работы? – Eithos

+0

Мне не нужна подстрока имени файла для работы. Например, 'p_rgh_0' и' h_0' совершенно разные. Я могу использовать '==', например, 'if lf == 'hf'', однако я могу увеличить список строк в будущем, так что у меня есть намного больше, начиная с' h', включая 'h_0'. – hypersonics

ответ

0

Вы можете просто использовать оператор continue в обработке первого блока pressure(), чтобы гарантировать, что любые файлы с двумя совпадениями не обрабатываются в звонках enthalpy().

Смежные вопросы