2016-11-12 48 views
0

因此,我正在做一個「簡單」任務,因爲像2h一樣,仍然找不到解決方案,所以我的問題在哪裏: 我想要在一個文件,一行一行,如果沒有找到結果,在結尾打印一些東西,否則調用一個函數。逐行讀取文件並僅在完成後打印

def DeletItemCheckUp(): 
    import re 
    find = True 
    itemNumber = input("\n what is the item you want to delet : ") 
    fileItem = open('Data_Item', 'r', encoding='Utf-8') 
    for line in fileItem: 
     sr = re.search(r'^\b%s\b'%itemNumber,(line.split(';')[0])) 
     if (sr == None): 
      pass 
    print("This item don't exist.") 
    fileItem.close() 
    if (find == True): 
     return itemNumber 
     DeletItem() 

所以這裏是我與不同的嘗試得到了問題: 1.打印「此項目不存在。」爲每一行沒有我的itemNumber。 2.當實際上沒有找到匹配項時,它不會調用DeletItem()。

對象代碼: 要求刪除項目,檢查文件是否存在唯一的項目編號,如果是,請調用DeletItem()來刪除它,否則告訴用戶此唯一項目編號不要不存在。

回答

0

很少有人會忽略你的要求。我們將使用一個標誌(真/假)來了解我們什麼時候發現了什麼,並根據這個標誌決定是調用函數還是打印/返回數字。

def DeletItemCheckUp(): 
    import re 
    find = False  # initialize to False 
    itemNumber = input("\n what is the item you want to delet : ") 
    fileItem = open('Data_Item', 'r', encoding='Utf-8') 
    for line in fileItem: 
     sr = re.search(r'^\b%s\b'%itemNumber,(line.split(';')[0])) 
     if (sr == None): 
      continue # do nothing and continue 
     else: 
      # we found the number, set the flag and break 
      find = True 
      break # no need to continue searching 
    fileItem.close() 
    if (find): 
     DeletItem()   # call the function 
    else: 
     print("This item don't exist.") 
+0

這工作完美,謝謝你救了我更多的小時,試圖找出如何做到這一點哈哈! =) – MaxyArthes

0

1)用您的打印替換pass('此項不存在')。 「通行證」的意思是「什麼也不做」。

2)您的DeleteItem()是的返回。返回後沒有任何執行,因爲您已返回到函數被調用的位置。你想

else: 
    DeleteItem()