2014-07-18 4 views
0

배수 값이있는 열이있는 CSV 파일이 있습니다. 여러 개의 하위 디렉토리가있는 루트 디렉토리에서 어떤 이름이 각 열의 값으로 시작하고 그 파일이있는 경로를 반환하고 csv에 쓰는지 찾으려고합니다. 예를 들어 : 열의 첫 번째 값은 'linux'입니다. 따라서 'linux01.jpg'와 'linuximg.jpg'라는 두 개의 파일이있는 경우 함수는 CSV의 두 경로를 반환합니다. 그게 내가 지금 가지고 있고 내 CSV는 비어 있습니다. 고맙습니다.CSV (PYTHON)의 열에서 디렉토리에있는 파일의 경로를 찾는 방법

import csv 
import os, fnmatch 


def find(pattern, path): 
    result = [] 
    for root, dirs, files in os.walk(path): 
     for name in files: 
      if fnmatch.fnmatch(name, pattern): 
       result.append(os.path.join(root, name)) 
    return result 

ifile = open('carte.csv', 'rb') 
reader = csv.reader(ifile) 
ofile = open('output.csv', 'wb') 
writer = csv.writer(ofile, delimiter='\t') 
for row in reader: 
    find_key = find(row[3], '/home/ro/Desktop/search/IDBUF') 
    if find_key != None: 
     writer.writerow(find_key) 

답변

0

출력 CSV가 비어 있거나 입력 CSV의 각 줄에 개행 문자가 포함되어있는 것은 놀라운 일이 아닙니다.

다음 줄 문제입니다 :

find_key = find(row[3], '/home/ro/Desktop/search/IDBUF') 

귀하의 예제에서 row[3]'linux'에서 평가하고 당신은 이름이 정확히 'linux'을있는 파일을 찾을 수 있습니다. 당신의 입력 CSV 파일에 *linux* 대신 linux를 작성

find_key = find('*' + row[3] + '*', '/home/ro/Desktop/search/IDBUF') 

타 솔루션입니다 : 당신은 이름이 'linux01.jpg' 수 있습니다하거나 이전 줄을 변경 'linuximg.jpg' 모든 파일을 찾습니다.

희망이 도움이됩니다.

+0

출력 CSV 파일의 빈 줄을 피하려면 find_key! = None :''find_key! = None 및 find_key! = [] :''줄을 변경하십시오. – Flabetvibes

관련 문제