2014-06-12 4 views
2

먼저 이것을 읽어 주셔서 감사합니다. 나는 파이썬에서 하위 디렉토리 워킹 (저장)을 조금 붙잡고있다. 아래의 코드는 각 하위 디렉토리를 차례로 살펴보고 특정 문자열을 검색하기 위해 파일을 처리 한 다음 xlsx 파일 (xlsxwriter 사용)을 생성하고 내 검색 데이터를 Excel에 게시합니다.파이썬에서 하위 디렉토리를 걷고 동일한 서브 디렉토리에 저장

나는이 문제를 가지고 ...

내가 가진 첫 번째 문제는 내가 각 디렉토리에 텍스트 파일을 처리 할 것입니다,하지만 텍스트 파일의 이름은 'TEXTFILE을 지정하는 대신 때문에 오히려 서브 디렉토리에 따라 달라집니다. txt '* .txt와 같은 것을하고 싶습니다. (여기에 glob을 쓰겠습니까?)

두 번째 문제는 Excel을 열거 나 만들 때 파일을 같은 하위 디렉토리에 저장하고 싶습니다. .txt 파일을 찾아서 처리했습니다. 현재 내 Excel은 python 스크립트 디렉토리에 저장되므로 결과적으로 새 하위 디렉토리가 열리고 처리 될 때마다 덮어 씁니다. 마지막에 Excel을 하위 디렉토리에 저장하는 것이 현명합니까 아니면 시작부터 현재 하위 디렉토리 경로로 만들 수 있습니까?

여기에이 문제를보고하기위한

for root, subFolders, files in os.walk(dir_path): 
    if 'Textfile.txt' in files: 
     with open(os.path.join(root, 'Textfile.txt'), 'r') as f: 

      #f = open(file, "r")  
      searchlines = f.readlines() 
      searchstringsFilter1 = ['Filter Used   :'] 
      searchstringsFilter0 = ['Filter Used   : 0'] 

      timestampline = None 
      timestamp = None 
      f.close() 

      # Create a workbook and add a worksheet. 
      workbook = xlsxwriter.Workbook('Excel.xlsx', {'strings_to_numbers': True}) 
      worksheetFilter = workbook.add_worksheet("Filter") 

다시 한 번 감사드립니다 ... 내 일부 작업 코드입니다.

MikG

내가 완전히 코드를 해결하지만, 여기에 힌트가 있습니다되지 않습니다

답변

1

:

텍스트 파일 이름이 그래서 오히려 '는 TextFile.txt'을 지정하는 대신, 하위 디렉토리에 따라 달라집니다 내가 좋아하는 것

당신이 디렉토리에있는 모든 파일을 나열 할 수 있습니다 된 .txt *처럼 뭔가를, 다음 파일 확장자를 확인

for filename in files: 
    if filename.endswith('.txt'): 
    # do stuff 
,536,

또한 woorkbook을 만들 때 경로를 입력 할 수 있습니까? 너는 뿌리가있다, 그렇지? 왜 그것을 사용하지 않습니까?

+0

, 감사, 작업을 얻었다. – MikG

0

files 변수에 이미 파일 목록이 있으므로 glob을 원하지 않습니다. 그래서, 모든 텍스트 파일을 찾을 수를 필터링 :

import fnmatch 
txt_files = filter(lambda fn: fnmatch.fnmatch(fn, '*.txt'), files) 

같은 하위 디렉토리에 파일을 저장하려면 다음과 같이 힌트를

관련 문제