2017-05-23 13 views
0

私はos.walkを使ってhtmlファイルを検索していますが、ファイルを返すのに2分かかりました。 パフォーマンスを改善するための提案はありますか?os.walk検索の改善

path1 = "//ggco/kk" 
shp_list = [] 
for dirpath, dirnames, y in os.walk(path1): 
    for k in y: 
     k.startswith(Lot_Operation_combine) and k.endswith(".html") 
     fullpath = os.path.join(dirpath, k) 
     shp_list.append(fullpath) 

     if os.path.isfile(fullpath): 
      path = "//ggco/kk" 
      shp_list = [] 
      for dirpath, dirnames, x in os.walk(path): 
       for f in x: 
        if f.startswith(Lot_Operation_combine1) and f.endswith(".html"): 
         fullpath = os.path.join(dirpath, f) 
         shp_list.append(fullpath) 

         if os.path.isfile(fullpath): 
          with open(fullpath, 'r')as f: 
           f_contens = f.read() 
           print(f_contens) 

          kau = f_contens 
          context = {"Final": kau} 
          return render(request, 'Output.html', context) 

     else: 

      path = "//ggco/kk" 
      shp_list = [] 
      for dirpath, dirnames, x in os.walk(path): 

       for f in x: 
        if f.startswith(Lot_Operation_1A) and f.endswith(".html"): 
         fullpath = os.path.join(dirpath, f) 
         shp_list.append(fullpath) 

         if os.path.isfile(fullpath): 
          with open(fullpath, 'r')as f: 
           f_contens = f.read() 

           print(f_contens) 

          kau = f_contens 
          context = { 

           "Final": kau 
          } 
          return render(request, 'Output.html', context) 

私はPythonプログラミング言語の新機能です。

os.walkを使用して1つの特定のファイルをより良いパフォーマンスで検索することをお考えですか?

私はあなたがこの問題のいくつかのアイデアを共有できることを願っています。

ありがとうございます。

+0

あなたは再帰的に特定のファイルを見つけることを意味しますか?これをチェックする:[Pythonで再帰的にファイルを探す?](https://stackoverflow.com/a/2186565/7428855) – Ian

+0

このコードは、各パスについて、すべてのパスを再度通過しているため、速度が遅くなります。 N^2)complexityここで、Nはパス内のファイル数です。また、同じデータを何度も印刷することになります。 – Pavan

+0

私はあなたのコードをたくさん最適化できると思います。複数のチェックがあります。それらのすべてのものを取り除こうとしてください – NMN

答えて

0

私はあなたのコードを多く最適化できると思います。複数の冗長チェックがあります。あなたがあなたの機能

からデータを返すようにしたい最後の行を追加することができ、それはあなたのため

path = "//ggco/kk" 
shp_list = [] 
for dirpath, dirnames, x in os.walk(path): 

    for f in x: 
     if f.startswith(Lot_Operation_combine1) and f.endswith(".html"): 
      fullpath = os.path.join(dirpath, f) 
      shp_list.append(fullpath) 
      kau = ''     
      with open(fullpath, 'r')as f: 
       f_contens = f.read() 

       print(f_contens) 

       kau = f_contens 
       context = {"Final": kau} 

に動作します

ただ、コードのこの部分を維持し、すべてのそれらのものを取り除くようにしてください

+0

最後の行リターンステートメント**リターンレンダリング(リクエスト、 'Output.html'、コンテキスト)**。あなたは完全な関数を言及していないので、私はreturn文を言及しなかったので、あなたは右インデントにそれを置くべきです – NMN

関連する問題