2014-03-04 120 views
0
import os 
import fileinput 

filenames1=os.listdir("./chi_square_metal_region_1") 
filenames1.sort() 

for line in fileinput.input("./test_input.dat"): 
    for eachfile in filenames1: 
     if eachfile == line: 
      print yes 

我在運行此代碼時沒有收到任何錯誤,但它沒有打印'yes',這是預期的輸出。python:input is not matching

它應該打印'是'兩次,因爲我有兩個文件在輸入匹配eachfile。爲什麼不打印預期的輸出?

+2

'filenames1'的內容是什麼,'test_input.dat'的內容是什麼? – MattDMo

+1

如果這段代碼到最後一行,它會引發'NameError'。 –

+0

文件名1中有2000個文件,test_input.dat中有兩行文件。文件名像1000.dat,1250.dat等。我在test_input.dat中輸入兩行文件名4000.dat和4500.dat。這兩個文件存在於文件名1中。 – Rafi

回答

1

的問題是:

for line in fileinput.input("./test_input.dat"): 

可變行將包含 '\ N' 末。試試這個:

import os 
import fileinput 

filenames1=os.listdir("./chi_square_metal_region_1") 
filenames1.sort() 

for line in fileinput.input("./test_input.dat"): 
    for eachfile in filenames1: 
     if eachfile == line[:-1]: 
      print yes 
+0

這個工程!非常感謝。 – Rafi

+0

@SupermassiveBlackhole:不客氣。 –