2013-10-16 2 views
1

여러 디렉토리에 여러 개의 파일이 있고 각 디렉토리를 반복하여 내 코드로 실행하려고합니다. 나는 이와 같은 코드를 작성했다.여러 디렉토리 (폴더)에서 파이썬 열기 파일

import os 

path = [".\\folder1\\",".\\forder2\\"] 
for i in path: 
    # print (i) # test 
    for filename in os.listdir(i): 
     filedata = open(i+filename,"r") 
     data = filedata.read().split() 
     string = "".join(data) 
     filedata.close() 

그러나 i가 구체적이지 않아 오류가 발생합니다. 각 폴더에는 문자열이 들어 있으며 os.listdir을 통해 액세스 할 수 있습니다.

여러 디렉토리에서 파일을 읽을 때이 문제를 어떻게 극복 할 수 있습니까?

미리 감사드립니다.

+0

사용해보십시오? – enginefree

+0

사실 나는 '경로'목록에 추가 할 디렉토리의 수를 변경하려고합니다. os.listdir이 디렉토리의 모든 파일을 읽은 것 같습니다. 고맙습니다. – Karyo

답변

4

당신이 파일의 변경 수를해야 할 것, 또는이 두입니다 있습니까 os.path.join

path = ["folder1", "folder2"] 
for i in path: 
    for filename in os.listdir(i): 
     with open(os.path.join(i, filename), 'r') as filedata: 
      string = "".join(filedata.read().split()) 
+0

도와 주셔서 감사합니다. 그러나 'TypeError : Type'int '의 객체에 len()이없고'~~ join assert len ​​(path)> 0 '이됩니다. 메시지를받지 못했습니다. 오류는 구체적이지 않습니다 ... 다른 제안이 있기를 바랍니다. – Karyo

+0

오, 내 잘못이야. 나는 동일한 변수 인 'i'를 코드에 두 번 사용했다. 완벽하게 작동합니다! Josha 감사합니다! – Karyo

+0

도움이되어 기쁘다, @ 카리 요 :) –

관련 문제