簡體   English   中英

在 if 語句中使用“and”

[英]Use of 'and' in if statements

我需要檢查數千個目錄中的兩種文件。 我已將索引或 idx 限制為小於 4,因為在該范圍內將需要找到兩種文件,即“jpg”和“.thmb”。 但是我需要 if 語句來要求這兩種文件都在目錄中。 if 語句:

if ('.jpg' in val) and ('thmb' in val):

工作,除了我不斷通過 else 語句打印輸出數據丟失時,當它不正確時:

Data missing W:\\North2015\200\10 200001000031.jpg 0
Data missing W:\\North2015\200\10 200001000032.jpg 1
Data missing W:\\North2015\200\100 200014000001.jpg 0
Data missing W:\\North2015\200\100 200014000002.jpg 1
Data missing W:\\North2015\200\101 200014100081.jpg 2

這是下面的代碼:

def missingFileSearch():
    for folder in setFinder():
        for idx,val in enumerate(os.listdir(folder)):
            if idx < 4:
                if ('.jpg' in val) and ('thmb' in val):
                    pass
                else:
                    print'Data missing',folder,val,idx

所以我想知道為什么我要通過 else 語句獲取輸出。 此外,這行代碼被掛斷了:

 if val.endswith('.jpg') and ('thmb' in val):
     print'Data is here!',folder,val,idx

這主要是我需要代碼做的事情。

我會這樣做:

def missingFileSearch():
    folders_with_missing = []
    for folder in setFinder():
        thmb_found = False
        jpg_found = False
        for fname in os.listdir(folder):
            thmb_found |= 'thmb' in fname
            jpg_found |= fname.endswith('.jpg')
            if thmb_found and jpg_found:
                break # break inner loop, move on to check next folder
        else: # loop not broken
            if not thmb_found and not jpg_found:
                desc = "no thmb, no .jpg"
            elif not thmb_found:
                desc = "no thmb"
            else:
                desc = "no .jpg"
            folders_with_missing.append((folder, desc))
     return folders_with_missing

我已經測試了這個代碼的一個稍微修改的版本(沒有setFinder()函數):

def missingFileSearch():
    folders_with_missing = []
    for folder in os.listdir(my_dir):
        thmb_found = False
        jpg_found = False
        for fname in os.listdir(os.path.join(my_dir, folder)):
            thmb_found |= 'thmb' in fname
            jpg_found |= fname.endswith('.jpg')
            if thmb_found and jpg_found:
                break # break inner loop, move on to check next folder
        else: # loop not broken
            if not thmb_found and not jpg_found:
                desc = "no thmb, no .jpg"
            elif not thmb_found:
                desc = "no thmb"
            else:
                desc = "no .jpg"
            folders_with_missing.append((folder, desc))
    return folders_with_missing

我創建了四個具有不言自明名稱的測試文件夾:

>>> os.listdir(my_dir)
['both_thmb_jpg', 'missing_jpg', 'missing_thmb', 'no_files']

然后運行函數:

>>> missingFileSearch()
[('missing_jpg', 'no .jpg'), ('missing_thmb', 'no thmb'), ('no_files', 'no thmb, no .jpg')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM