파일 한번에 여러개 불러오고, 변수에 저장하기

게시판 IDL Q&A 파일 한번에 여러개 불러오고, 변수에 저장하기

태그: , , ,

이 게시글은 2개 답변과 3명 참여가 있으며 마지막으로  Jonghyuk Yi에 의해 2 년, 8 월 전에 업데이트 됐습니다.

  • 글쓴이
  • #3215 답변

    sksk2555
    회원

    일단 하나의 파일은
    year mon dd num name
    2016 05 03 1 k
    2016 05 03 2 s
    . . . . .
    . . . . .
    . . . . .
    이런 형태로 저장이 되어있습니다. 하나의 파일은 약 300개의 행을 가지고 있습니다.
    저런 형태의 파일이 251개가 있습니다. 한번에 읽어서 년도 전부를 변수에 저장하고 싶습니다.
    예를 들면
    yr=[2016,2016,2016,2016,2016,2016,2016,2016…..(300*250개 정도가 되겠지요..)]
    m=[05,05,05,05,05,05,05,05,……,12,12,12,12,12,12..]
    d=[03,04,05,06,…..31,01,02,03,04,05,06….31]
    이런식으로 한 변수안에 251개의 파일들의 같은 유형의 정보를 저장하고 싶습니다.

    file=file_search(경로/*.txt’)

    file_input=file[i]

    for i=0, 250 do begin

    readcol, file_input ,year, mon, num, name, format='(i,i,i,a)’

    이렇게 까지는 했는데 다음부터 막힙니다. 도와주세요.

    • 이 게시글은  sksk2555에 의해 2 년, 8 월 전에 수정됐습니다.
  • #3222 답변

    mwkim
    회원

    안녕하세요

    질문하신 내용은 자료를 반복적으로 불러왔는데 불러온 자료를 어떻게 하나의 변수에 담을지 질문하신건가요?

    array 자료에 대해 다음과 같이 쉽게 연결이 됩니다.

    x = INDGEN(3)
    y = [INDGEN(3),x]
    PRINT,y
    0 1 2 0 1 2

    위 질문에서 FOR 문 밖에서 하나로 저장할 변수를 정의(readcol에서 자료를 받는 변수명과는 다르게)하신 후

    위와 같은 방식으로 연결하시면 될 것 같습니다.

    file=file_search(경로/*.txt’)

    file_input=file[i]

    yr = [];빈 array정의

    for i=0, 250 do begin

    readcol, file_input ,year, mon, num, name, format='(i,i,i,a)’

    yr = [yr,year];불러온 자료 연결

  • #3224 답변

    Jonghyuk Yi
    회원

    IDL 내에서 배열을 이어 붙이는 방법을 이용하는 것이 확장성을 고려하면 안전합니다. 그런 면에서 위 mwkim 님의 답변이 가장 좋은 방법일 것 같습니다. 다만, 앞의 설명이 막막하게 느껴진다면, OS(운영체제)의 도움을 받는 방법도 있을 것 같습니다.

    윈도우라면, 명령 프롬프트를 열어서
    C:\경로> copy *.txt every.all

    Linux/Unix 계열이라면 터미널을 열어서
    경로$ cat *.txt > every.all

    위와 같은 방법으로 모든 파일을 하나로 일단 합쳐놓는 것입니다.

    이후 IDL에서 readcol, every.all, year, min, num ….
    을 실행하면 모든 데이터를 하나의 배열로 읽을 수 있습니다. readcol이 중간에 등장하는 헤더들을 알아서 건너 뛰기 때문에 이런 시도가 가능합니다. IDL에 익숙하지 않은데, 급하게 일을 처리해야 한다면, 이 방법을 추천합니다.

    spawn 명령을 이용하면, 운영체제에서의 작업을 IDL 코드 안으로 넣을 수도 있긴 합니다. 어렵진 않습니다.
    cd, ‘경로’
    spawn, ‘copy *.txt every.all’

    • 이 답변은  Jonghyuk Yi에 의해 2 년, 8 월 전에 수정됐습니다.
'파일 한번에 여러개 불러오고, 변수에 저장하기'에 답변달기
글쓴이 정보: