2015-02-09 39 views
0

我試圖使用if語句來檢查是否存在一個特定的字符串,該字符串恰好也具有相同的文件名。但是,我遇到了兩個具有共同字符的字符串,我想嚴格檢查重複。這是我的代碼的一部分。我有兩個文件名爲p_rgh_0h_0在Python中包含if語句的重複字符的字符串

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 2015-02-09 23:40:02

+0

我實際上並不需要文件名的子串來工作。例如'p_rgh_0'和'h_0'完全不同。我可以使用'==',比如'if if =='hf'',但是我可能會在未來增加字符串列表,所以我有更多以'h'開頭的包括'h_0'。 – hypersonics 2015-02-09 23:46:21

回答

0

您可以只使用一個continue聲明中的第一個塊處理pressure(),以確保任何雙匹配的文件不會在enthalpy()呼叫處理。