2012-07-23 3 views
0

파이썬에 대한 많은 지식이 없으므로 여러 개의 입력 파일을 어떻게 하나의 엑셀 파일로 다른 열에 저장할 수 있습니까? 다음과 같이 하나의 열이 로그 파일의 일부 결과를 Excel 파일에여러 개의 입력 파일을 파이썬에 대한 하나의 엑셀 파일로 변환

file = 'output_1.log' 

출력 : 내가 입력으로 하나의 로그 파일을 소요 파이썬 스크립트가

data = open(file, 'r') 

을 어떻게 할 수 여러 개의 텍스트 파일 (*.log)을 읽고 각 입력 파일에 대해 서로 다른 열의 단일 Excel 파일에 결과를 인쇄하려면이 명령을 변경하십시오.

고맙습니다 ...

+0

1. 무엇을 로깅하고 있습니까? 2. 파일을 1 개로 압축하여 수행하려는 작업은 무엇입니까? 3. 다른 로그의 로그 메시지에서 수행해야하는 정렬 작업은 무엇입니까? –

+0

나는 이미 차량의 속도와 가속도를 기록하고 속도와 가속을 위해 2 개의 엑셀 파일에서 차량의 속도와 가속도를 출력하는 파이썬 스크립트를 가지고있다. 그러나이 스크립트는 다음 명령으로 특정 파일을 읽습니다 : file = 'output_1.log'. 예를 들어 로그를 읽고 싶습니다. 20 대의 차량으로 속도와 가속도를 각기 다른 두 개의 Excel 파일로 출력합니다. – athpapa

+0

일반 개요 : 1) 구문 분석 할 파일의 목록을 가져옵니다. 2) 파일을 반복하고 Excel로 출력하는 동안 읽습니다. 현재 Excel에 쓰기 위해 무엇을 사용하고 있는지 잘 모르겠지만 그 단계는 변경해서는 안됩니다. – ernie

답변

1

이렇게하면 원하는 작업을 수행 할 수 있습니다. 각 파일을 개별적으로 읽어 각 파일 이름을 해당 목록에 매핑하는 사전을 만듭니다.

import glob 

data = {} 
for infile in glob.glob("*.log"): 
    with open(infile) as inf: 
     data[infile] = [l[:-1] for l in inf] 

with open("summary.xls", "w") as outf: 
    outf.write("\t".join(data.keys()) + "\n") 
    for sublst in zip(*data.values()): 
     outf.write("\t".join(sublst) + "\n") 
0

데이비드의 대답은 훌륭한 옵션입니다.

개인적으로, 나는 os.walk (모든 디렉토리를 하나의 디렉토리에서 가져 오는 경우)를 사용하거나 사용자가 제공 한 목록에서 반복하여 모든 로그 파일을 반복하는 경향이 있습니다.

XLS 파일을 작성하는 경우 David가 지적한대로 조인을 사용하여 TSV로 작성할 수 있습니다. 그러나 XLWT과 같은 라이브러리를 사용하면 더 많은 기능을 제어하고 더 많은 기능을 이용할 수 있습니다. TSV로 사용하려는 경우 텍스트 입력과 같은 작업을 돕기 위해 writer 객체를 사용하여 CSV 라이브러리를 살펴볼 수 있습니다.

관련 문제