np.savetxt 를 이용하여 특정 형식의 텍스트파일로 저장하기

조회수 1234회
import glob

import os

from tkinter import filedialog

import numpy as np

Root = filedialog.askdirectory()

FolderName = os.path.basename(Root)

FileList = os.listdir(Root)

RefHeight = [Folder for Folder in FileList if Folder.endswith('csv')]

for k in range(0, len(RefHeight)):

    tempList = glob.glob1(Root, "*.csv")
    tempList.sort()
    RefHeightPath = Root + '/' + tempList[k]
    RefHeight = np.genfromtxt(RefHeightPath, delimiter=",")[:, :-1]
    amount = len(RefHeight) * len(RefHeight[0]) #행의 갯수와 열의 갯수의 곱
    total = sum(RefHeight) # 행의 수치 총합
    total_ave = sum(total) # 열과 행의 총합
    np.savetxt(os.path.join(Root, 'csv_ave.txt'), (tempList[k], '=', total_ave / amount) , fmt='%s',delimiter = ",")

위 코드는 tkinter를 이용해 한 디렉터리를 불러서 이 디렉터리 안에 있는 여러가지 형태의 파일중에서 csv파일만 불러와서 평균 값을 출력하는 코드입니다. 출력까지는 성공했는데 이 값을 메모장에서 저장을 하고 싶은데 파일명=csv평균값이 한줄에 입력되도록 코드를 짜고 싶은데 위와 같이 하면 단 하나의 값만 저장이 됩니다.

csv_ave.txt 텍스트 파일 안에 한줄씩 평균값이 출력되어 전부 저장되게 하려면 어떻게 코드를 수정하면 될까요?

예를 들어 Root폴더(filedialog.askdirectory() => tkinter로 불러온 폴더) 안에 csv파일이 3개 있다면

 1. csv1 = 평균
 2. csv2 = 평균
 3. csv3 = 평균

이렇게 저장되기를 원합니다.

np.savetxt(os.path.join(Root, 'csv_ave.txt'), (tempList[k], '=', total_ave / amount) , fmt='%s',delimiter = ",") 이 부분이 수정되어서 어떠한 코드가 추가되거나 삭제 되어야 할것 같습니다.

  • for 안에서는 line을 만들어 list에 append을 하세요. for 반복이 끝난후에 list 값을 파일에 쓰세요. 정영훈 2019.8.4 04:08

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)