2016-07-12 2 views
0

경로에있는 모든 version.php 파일을 찾는 함수를 작성했습니다. 그 함수의 출력을 취해 그 파일에서 한 줄을 찾으려고합니다. 파일을 발견 기능은 다음과 같습니다파일 찾기 및 해당 파일에서 문자열 찾기

def find_file(): 
    for root, folders, files in os.walk(acctPath): 
    for file in files: 
     if file == 'version.php': 
     print os.path.join(root,file) 
find_file() 

이 경로에 여러 version.php 파일이 있고 나는 그 각각의 파일에서 문자열을 반환하고 싶습니다.

편집 : 제안 해 주셔서 감사합니다. 코드를 구현 한 결과 필요하지 않았습니다. 목록을 작성하고 각 항목을 두 번째 부분으로 전달하여 알아낼 수있었습니다. 이것이 최선의 방법은 아닐지 모르지만, 나는 단지 며칠 동안 파이썬을 해왔습니다.

def cmsoutput(): 
    fileList = [] 
    for root, folders, files in os.walk(acctPath): 
    for file in files: 
     if file == 'version.php': 
     fileList.append(os.path.join(root,file)) 

    for path in fileList: 
    with open(path) as f: 
     for line in f: 
     if line.startswith("$wp_version ="): 
      version_number = line[15:20] 
      inst_path = re.sub('wp-includes/version.php', '', path) 
      version_number = re.sub('\';', '', version_number) 
      print inst_path + " = " + version_number 

cmsoutput() 
+0

어떤 문자열을 반환 하시겠습니까? 어떤 기준을 기반으로합니까? –

+0

내가 찾고있는 문자열은 "$ wp_version ="이며, 그 존재 이외의 다른 기준은 없습니다. – cthulhuplus

답변

0

출력 기능을 사용하려면 return해야합니다. 인쇄하면 자르지 않습니다.

import os 


def find_file(): 
    for root, folders, files in os.walk(acctPath): 
     for file in files: 
      if file == 'version.php': 
       return os.path.join(root,file) 

foundfile = find_file() 

지금 변수 foundfile 우리가보고 할 파일의 경로를 포함 : 모든 것을 가정하면 다음과 같이 약간 수정되어야 작동합니다. 파일에서 문자열을 찾고은 다음과 같이 수행 할 수 있습니다

with open(foundfile, 'r') as f: 
    content = f.readlines() 
    for lines in content: 
     if '$wp_version =' in lines: 
      print(lines) 

또는 기능 버전 :

def find_in_file(string_to_find, file_to_search): 
    with open(file_to_search, 'r') as f: 
     content = f.readlines() 
     for lines in content: 
      if string_to_find in lines: 
       return lines 

# which you can call it like this: 
find_in_file("$wp_version =", find_file()) 

이 하나를 발견로 코드의 기능 버전은 위의 즉시 종료됩니다하는 것으로 찾고있는 문자열의 인스턴스. 그들 모두를 얻으려면 수정해야합니다.

관련 문제