2016-10-24 1 views
0

私はツリーディレクトリの特定の文字列を検索するPythonスクリプトを作成しています。エンドユーザーに検索に含めるフォルダを定義してもらい、スクリプトがユーザーがスキャンしたいフォルダの1つを見つけたら、このスクリプトはすべてのサブフォルダもスキャンすることになっています選択されたフォルダ。Python 3.5 OS選択したフォルダに対応し、そのサブフォルダを含める

私は2つのforループを実行しようとしていますが、動作させることはできません。

スクリプトの先頭には、次のようになります。

startTime = datetime.datetime.now() 
option = input("Do you want to scan: A) Excel B) PDF C) Both Q) Quit: ") 
option = option.lower() 
if (option == "b") or (option == "b") or (option == "c"): 
    stringToSearch = input("Which string do you want to search? ") 
    folderToSearch = input("Which top folder to search from(i.e. Z:\S 15\BOMs)? ") 
    subfoldersToSearch = input("Which subfolders(i.e. BOMs, Catalogs? <NO ANSWER = ALL) ") 
    print("Press CTRL + C to stop the search") 
    for foldername, subfolders, filenames in os.walk(folderToSearch): 
     for filename in filenames: 
      if (subfoldersToSearch == "") or (subfoldersToSearch in foldername): 
       print(subfoldersToSearch, "+++", foldername)      
       for x_foldername, x_subfolders, x_filenames in os.walk(foldername): 
        totalFiles += 1 
        for x_filename in x_filenames: 
         if (x_filename.endswith('.pdf') and option == "b") or (x_filename.endswith('.pdf') and option == "c"): 

[残りのものを行う]

問題は、すぐに行うのに選択の1つを介して歩くので、それが連続ループに入ったということです最初のforループに戻り、同じ選択されたフォルダーを再び移動しようとします。

これを行う良い方法はありますかos.walk

基本的には、特定のフォルダを見つけて、そのフォルダの内容をスキャンしてから(フォルダを含む)、次のフォルダに移動し続けます。

答えて

0

私はそれを理解して、実際には1つのforループでうまく動作します。ここに新しいコードがどのように見えて、それが将来誰かを助けることを願っています...ベスト

startTime = datetime.datetime.now() 
    option = input("Do you want to scan: A) Excel B) PDF C) Both Q) Quit: ") 
    option = option.lower() 
    if (option == "b") or (option == "b") or (option == "c"): 
     stringToSearch = input("Which string do you want to search? ") 
     folderToSearch = input("Which top folder to search from(i.e. Z:\S 15\BOMs)? ") 
     subfoldersToSearch = input("Which subfolders(i.e. BOMs, Catalogs? <NO ANSWER = ALL) ") 
     print("Press CTRL + C to stop the search") 
     for foldername, subfolders, filenames in os.walk(folderToSearch, topdown=True): 
      print(subfolders) 
      for filename in filenames: 
       if (subfoldersToSearch == "") or (subfoldersToSearch in foldername): 
        print(subfoldersToSearch, "+++", foldername) 
関連する問題