2016-08-18 8 views
-1

私は次のコードを実行しています。私は folder1、folder2、.repositoryの3つのフォルダをスキップします。フォルダの一部が存在しない場合Pythonの検索でディレクトリをスキップ

は、しかし、私はエラーを取得:

indentationerror:インデント解除は任意の外側のインデントレベルと一致していません

どのように私は、フォルダというスキップして検索し、そうでない場合でも、することができます現在は何のエラーもありませんか?ここに私のコード:

import re 
import os 
from os.path import join 
comment=re.compile(r"<!--\s+\| Start of user code \(user defined modules\)\s+\|-->\s+<!--\s+\| End of user code\s+\|-->", re.MULTILINE) 
tag="<module>" 

for root, dirs, files in os.walk("."): 
    dirs.remove("folder1") 
    dirs.remove("folder2") 
    dirs.remove(".repo") 
    if "pom.xml" in files: 
     p=join(root, "pom.xml") 
     print("Checking",p) 
     with open(p) as f: 
      s=f.read() 
     if tag in s and comment.search(s): 
      print("The following file has been modified",p) 

------ UPDATE:

import re 
import os 
from os.path import join 
comment=re.compile(r"<!--\s+\| Start of user code \(user defined modules\)\s+\|-->\s+<!--\s+\| End of user code\s+\|-->", re.MULTILINE) 
tag="<module>" 

for root, dirs, files in os.walk("/home/temp/"): 
dirs.remove("/home/temp/test1") 
dirs.remove("/home/temp/test2") 
dirs.remove("/home/temp/test3") 

     if "pom.xml" in files: 
     p=join(root, "pom.xml") 
     print("Checking",p) 
     with open(p) as f: 
      s=f.read() 
     if tag in s and comment.search(s): 
      print("The following file contains user code modules:-------------> ",p) 

そして、ここで出力:

python /home/temp/test_folder/python_script_4.py 
    File "/home/temp/test_folder/python_script_4.py", line 12 
    if "pom.xml" in files: 
    ^
IndentationError: unexpected indent 

LAST UPDATE --------->

import re 
import os 
from os.path import join 
comment=re.compile(r"<!--\s+\| Start of user code \(user defined modules\)\s+\|-->\s+<!--\s+\| End of user code\s+\|-->", re.MULTILINE) 
tag="<module>" 

for root, dirs, files in os.walk("/home/dlopez/temp/test_folder/"): 
dirs.remove("/home/temp/test_folder/test1") 
dirs.remove("/home/temp/test_folder/test2") 
dirs.remove("/home/temp/test_folder/test3") 

if "pom.xml" in files: 
    p=join(root, "pom.xml") 
    print("Checking",p) 
    with open(p) as f: 
     s=f.read() 
     if tag in s and comment.search(s): 
      print("The following file contains user code modules:-------------> ",p) 

そして、私の出力:

python /home/temp/test_folder/python_script_5.py 
Traceback (most recent call last): 
    File "/home/dlopez/temp/test_folder/python_script_5.py", line 8, in <module> 
    dirs.remove("/home/temp/test_folder/test1") 
ValueError: list.remove(x): x not in list 

ありがとうございました! :)

+0

私はフォルダが存在する場合でも、最近、このエラーが出る:IndentationErrorは:期待しますインデントされたブロック – user2961008

+1

このエラーはあなたの質問とは無関係です。ファイルのインデントが正しいことを確認しますか? – dunder

+0

エラーはあなたの質問に関連していません、エラーはインデントに関連しています – danielfranca

答えて

0

は、現在のインデントと一致しない場合

import re 
import os 
from os.path import join 
comment=re.compile(r"<!--\s+\| Start of user code \(user defined modules\)\s+\|-->\s+<!--\s+\| End of user code\s+\|-->", re.MULTILINE) 
tag="<module>" 

for root, dirs, files in os.walk("/home/dlopez/temp/"): 
dirs.remove("/home/dlopez/temp/test1") 
dirs.remove("/home/dlopez/temp/test2") 
dirs.remove("/home/dlopez/temp/test3") 

     if "pom.xml" in files: # The if statement is not aligned to anything 
     p=join(root, "pom.xml") 
     print("Checking",p) 
     with open(p) as f: 
      s=f.read() 
     if tag in s and comment.search(s): 
      print("The following file contains user code modules:-------------> ",p) 

変更し、それまでのあなたのインデント:

import re 
import os 
from os.path import join 
comment=re.compile(r"<!--\s+\| Start of user code \(user defined modules\)\s+\|-->\s+<!--\s+\| End of user code\s+\|-->", re.MULTILINE) 
tag="<module>" 

for root, dirs, files in os.walk("/home/dlopez/temp/"): 
    # Skip the dirs you want looping a list 
    for skipped in ("/home/dlopez/temp/test1", "/home/dlopez/temp/test1", "/home/dlopez/temp/test3"): 
     if skipped in dirs: dirs.remove(skipped) 

    if "pom.xml" in files: 
     p=join(root, "pom.xml") 
     print("Checking",p) 
     with open(p) as f: 
      s=f.read() 
      if tag in s and comment.search(s): 
       print("The following file contains user code modules:-------------> ",p) 
Additonally
+2

さらに、コードにタブとスペースを混在させないでください。タブまたは空白のいずれかを使用してください - [PEP8に従って]スペースが優先されます(https://www.python.org/dev/peps/pep-0008/#id17)。 –

+0

また、PEP8では4つのスペースが推奨されています。これにより、コード方法がわかりやすくなります。 – Ian

+0

最後の更新でお手伝いをしてください、まだ明確ではありません!ありがとう – user2961008

関連する問題