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

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

태그: , , ,

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #3215 Reply
      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에 의해 6 years, 10 months 전에 수정됐습니다.
    • #3222 Reply
      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 Reply
      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에 의해 6 years, 10 months 전에 수정됐습니다.
2 답변 글타래를 보이고 있습니다
'파일 한번에 여러개 불러오고, 변수에 저장하기'에 답변달기
글쓴이 정보:




취소