2017-10-15 52 views
-1

我對下面的代碼有疑問。Python:For循環讀取文本文件不能正確執行所有文本文件記錄

我試圖採取一個txt文件作爲輸入,將有數據如下

aaaaaaaaaa 
bbbbbbbbbb 
cccccccccc 

,並把它傳遞給searchForJob函數來執行不同的文件搜索,但我對輸入文件的循環沒有正確執行,它沒有佔用全部三行輸入文件。它只選擇第二行(bbbbbbbb)或第三行(ccccccccc)。有人可以幫我解決這個問題。我是python語言的新手。

def searchForJob(job): 
    with open('some location/Jls.txt',"U") as lines: 
     for line in lines: 
      if line.find(job)!=-1: 
       print(job + ' : Found') 
       break; 

    return 




jobNames = open('some location/JNames.txt') 
try: 
    for job in jobNames: 
     print(job) 
     searchForJob(job) 
finally: 
    jobNames.close() 
+0

什麼是 「U」 應該在第二個參數做'searchForJob'中的'open'?我希望這是一種模式。 –

+0

'U'可能是在txt文件中看到新行 –

+0

想要在多文本文件中搜索aaaaa bbbbbb cccc嗎? – DRPK

回答

0

讀取文件時,請使用r模式。

每行有一個尾隨\n,所以你需要strip()他們。使用repr(...)函數,以便您可以看到尾隨的空格。

使用Python語言的功能,如with statement,則in keyword

按照PEP 8風格指南。

def search_for_job(job): 
    with open('j.txt', 'r') as f: 
     for line in f: 
      if job in line: 
       print(repr(job) + ' : Found in ' + repr(line)) 
       break 


with open('n.txt', 'r') as job_names: 
    for job in job_names: 
     job = job.strip() 
     print('Searching for job ' + repr(job)) 
     search_for_job(job) 

j.txt

job 1, name 2... 
job 2, name 1... 
job 3, nothing 

n.txt

name 1 
name 2 
name 3 

輸出示例:

$ python3 read.py 
Searching for job 'name 1' 
'name 1' : Found in 'job 2, name 1...\n' 
Searching for job 'name 2' 
'name 2' : Found in 'job 1, name 2...\n' 
Searching for job 'name 3' 
+0

我仍然得到相同的輸出。同樣的問題再次發生:( –

+0

@AmritpalsinghThethi你檢查了結尾的'\ n'新行字符嗎? – LYF

+0

Thnx很多:) ......它現在完美工作 –