2017-05-03 6 views
0

내 현재 작업 디렉토리에서 내 파이썬 스크립트를 실행하는 곳에 'genes.faa.genespercontig.csv'파일을 포함하는 여러 하위 디렉토리가 있습니다. 이 파일들의 팬더 데이터 프레임을 만들고 싶습니다. 내 스크립트를 실행하면파이썬 오류; os.walk와 파일을 찾을 수 없습니다

, 나는 오류를 얻을 :

import os 
import pandas as pd 

for root, dirs, files in os.walk(os.getcwd()): 
    with open(os.path.join(root, 'genes.faa.genespercontig.csv', 'r')) as f1: 
     df1 = pd.read_csv('f1', header=None, delim_whitespace=True, names = ["contig", "genes"]) 
     print(df1) 

을 나는 파일이 드 서브 디렉토리에 있는지,하지만 왜 파이썬 수 있습니다 : 다음과 같이

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\KLIF\\Documents\\Linda\\genes.faa.genespercontig.csv\\r' 

내 스크립트입니다 그것을 찾지 못했습니까?

답변

1

"r"이 "genes.faa.genespercontig.csv"라는 디렉토리 내의 파일이 아니라면 간단한 구문 오류입니다. 귀하의 괄호 약간 조정 필요 :

또한
... 
with open(os.path.join(root, 'genes.faa.genespercontig.csv'), 'r') as f1: 
... 

, 당신은 파일을 하위 디렉토리에 포함되어 말하는 것을 주어, 당신은 아마 os.walk 함수에 의해 반환 된 dirs 변수 내에서 하위 디렉토리를 반복 할 필요가있다. 문자열 'f1'을 사용하여 pd.read_csv으로 전달하지만 열린 파일 객체를 원한다는 것을 알았습니다. 뭔가 같은 :

... 
filepath = os.path.join(root,subdir,'genes.faa.genespercontig.csv') 
if os.path.isfile(filepath): 
    with open(filepath, 'r') as f1: 
... 
+0

내가 그것을 조정하지만 여전히 파일 – Gravel

+0

@Gravel 추가를 발견하지 않는다는 오류가 있습니다 :

import os import pandas as pd for root, dirs, files in os.walk(os.getcwd()): for subdir in dirs: with open(os.path.join(root,subdir,'genes.faa.genespercontig.csv'),'r') as f1: df1 = pd.read_csv(f1, header=None, delim_whitespace=True, names = ["contig", "genes"]) print(df1) 

실제로 존재하는 파일을 열 수있는 유일한 시도, 사용하기 자세한 세부 사항. 나는 귀하의 디렉토리 구조를 알지 못해서 테스트를 거치지 만 귀하의 질문에 제공된 세부 사항에 기초를 두었습니다. –

+0

예. 고마워요! 내가 필요하다면; 이 파일을 포함하지 않는 하위 디렉토리가 있으면 어떻게해야 할 지 조언 해 줄 수 있습니까? 왜냐하면 내가 하위 디렉토리를 반복 할 때 스크립트가 하위 디렉토리에서 파일을 찾을 수 없기 때문에 파일이 중지되고 다음 하위 디렉토리보다 파일을 계속 사용하기를 원합니다. – Gravel