0

コードはありますが、期待どおりに動作しないようです。見つかったファイルを検索するには、ユーザーに入力を求める必要があり、再度尋ねることはありませんが、尋ね続けます。しかし、ファイルが見つからない場合は、ユーザーにもう一度尋ねたいと思います。私のコードは次のとおりです。

import os, sys
from stat import *
from os.path import join

while True:
    lookfor=input("\nPlease enter file name and extension for search? \n")
    for root, dirs, files in os.walk("C:\\"):
        print("Searching", root)
        if lookfor in files:
            print("Found %s" % join(root, lookfor))
            break
        else:
            print ("File not found, please try again")
4

3 に答える 3

1

問題は、内側のループ ( for) を壊しているだけです。

ここで提案されているように、これを関数に入れて中断する代わりに返すか、例外を発生させてキャッチすることができます:ネストされたループからの脱却

于 2013-04-30T21:48:46.710 に答える
1

break内側の for ループを中止するだけです。ヘルパー変数を簡単に使用できます。

import os, sys

while True:
    lookfor=input("\nPlease enter file name and extension for search? \n")
    found = False
    for root, dirs, files in os.walk("C:\\"):
        print("Searching", root)
        if lookfor in files:
            print("Found %s" % os.path.join(root, lookfor))
            found = True
            break
     if found:
         break
     print ("File not found, please try again")

または、関数にして次を使用しますreturn

def search():
    while True:
        lookfor=input("\nPlease enter file name and extension for search? \n")
        for root, dirs, files in os.walk("C:\\"):
            print("Searching", root)
            if lookfor in files:
                print("Found %s" % os.path.join(root, lookfor))
                return
        print ("File not found, please try again")
search()

for..else次の構文も使用できます。

while True:
    lookfor=input("\nPlease enter file name and extension for search? \n")
    for root, dirs, files in os.walk("C:\\"):
        print("Searching", root)
        if lookfor in files:
            print("Found %s" % os.path.join(root, lookfor))
            break
    else:
        print ("File not found, please try again")
        continue
    break
于 2013-04-30T21:49:50.393 に答える
0

breakfor ループ内にあるため、ループではなく for ループから抜け出すだけですwhile

import os, sys
from stat import *
from os.path import join

condition=True 

while condition:
    lookfor=input("\nPlease enter file name and extension for search? \n")
    for root, dirs, files in os.walk("C:\\"):
        print("Searching", root)
        if lookfor in files:
            print("Found %s" % join(root, lookfor))
            condition = False      #set condition to False and then break
            break
        else:
            print ("File not found, please try again")
于 2013-04-30T21:48:45.647 に答える