SSブログ

ruby ファイルに出力 [raspberrypi]

便利な時代になったなあと実感する今日この頃
googleで”ruby ファイルに出力”で検索すると親切丁寧に教えてくれる

:::::::::::::::::::::::::text_write.rbの内容::::::::::::::::
filename = "20201103.adi"                    #ファイル名固定
pattern = Regexp.new("QSO_DATE")
file=open(filename)
file2=File.open('cqrtohamlog.csv',"w")       # "w":ファイル無いとき新規作成、存 在するとき内容を消去してから書き直す。
while text=file.gets do
    if pattern =~ text
        # adifファイルの先頭から41文字にはコールサインの文字数が書かれている42文字目が>であれば1桁である
        if text[42,1] == ">"           #文字数1桁
          callnum = text[41,1].to_i
          callsign = text[43,callnum] + ","   #csvデータにするために,区切りにするため
          file2.print(callsign)               #
        else                            #文字数2桁
          callnum = text[41,2].to_i
          callsign = text[44,callnum] + ","
          file2.print(callsign)
        end
    end
end
file2.print("\n")
file.close
file2.close
:::::::::::::::::::::::::text_write.rbの内容終わり::::::::::::::::
これを実行すると20201103.adiを読み込んでコールサインだけをcqrtohamlog.csvに書き出してくれる。
以下を実行すると20201103.adiを読み込んでhamlogで読み込めるcsvデータを作成できる。ただし問題点がある。
:::::::::::::::::::::::::cqrtohamlog.rbの内容::::::::::::::::
filename = "20201103a.adi"                    #ファイル名固定
# filename = ARGV[0]                         #ファイルを引数で指定する場合
pattern = Regexp.new("QSO_DATE")
file=open(filename)
file2=File.open('cqrtohamlog.csv',"w")       # "w":ファイル無いとき新規作成、存 在するとき消去してから書き直す。
while text=file.gets do                      #ファイルから1行ずつ読み込む
    if pattern =~ text                       #読み込んだデータにQSO_DATEがあるか?
                                             #else文が無いのでQSO_DATEが無い行は破棄される
      #
      # adifファイルの先頭から41文字にはコールサインの文字数が書かれている42文字目が>であれば1桁である
      #:::::ここから "CallSign"
      if text[42,1] == ">"                  #42文字目が>であれば文字数1桁
        #print text[41,1] + "\n"
        callnum = text[41,1].to_i
        #print text[43,callnum] + "\n"
        callsign = text[43,callnum] + ","
        file2.print(callsign)
      else                                  #42文字目が数字であれば文字数2桁である
        #print text[41,2] + "\n"
        callnum = text[41,2].to_i
        #print text[44,callnum] + "\n"
        callsign = text[44,callnum] + ","
        file2.print(callsign)
      end
      #:::::ここまで"CallSign"
      #:::::ここからdate
      # 先頭から14文字めには年数下2桁, 16文字めには 月2桁 18文字めには 日にち 2桁
      #print text[14,2] + "/" + text[16,2] + + "/" + text[18,2] + "," + "\n"
      comdate = text[14,2] + "/" + text[16,2] + + "/" + text[18,2] + ","
      file2.print(comdate)
      # ::::ここまでdate
      #:::::ここからtime
      #print text[31,2] +  ":" + text[33,2] + "," + "\n" #時間表示
      file2.print(text[31,2] +  ":" + text[33,2] + ",")
      # ::::ここまでtime
      #:::::
      # 〔His〕は、相手に送ったレポートを入れます
      # :::::ここから RST_SENTの文字数
      #p "RST_SENT"
      # text.index("RST_SENT:") 文字列RST_SENTを検索してその先頭からの位置を返す
      #p text.index("RST_SENT:")              # RST_SENT:が記載してある先頭から の位置
      rstrclmn = text.index("RST_SENT:") + 9
      #p text[rstrclmn,1]
      rstrnum = text[rstrclmn,1]             # RST_SENTの文字数
      #p rstrnum
      #p text[rstrclmn+2,rstrnum.to_i]
      rsts = text[rstrclmn+2,rstrnum.to_i]   # RST_SENT
      #p rsts
      file2.print(rsts + "," )
      # :::::ここまで
      # 〔My〕は、相手からいただいたレポートを入れます
      # :::::ここから RST_RCVDの文字数
      #p "RST_RCVD"
      #p text.index("RST_RCVD:")              # RST_RCVD:が記載してある先頭から の位置
      rstrclmn = text.index("RST_RCVD:") + 9
      #p text[rstrclmn,1]
      rstrnum = text[rstrclmn,1]             # RST_RCVDの文字数
      #p rstrnum
      #p text[rstrclmn+2,rstrnum.to_i]
      rstr = text[rstrclmn+2,rstrnum.to_i]   # RST_RCVD
      #p rstr
      file2.print(rstr + "," )
      # :::::ここまで
      # :::::ここから freqの文字数
      #p "周波数"
      #p text.index("FREQ:")                  # freqが記載してある先頭からの位置
      freqclmn = text.index("FREQ:") + 5
      #p text[freqclmn,1]
      freqnum = text[freqclmn,1]             # freqの文字数
      #p freqnum
      #p text[freqclmn+2,freqnum.to_i]
      freq = text[freqclmn+2,freqnum.to_i]   # freq
      #p freq
      file2.print(freq + "," )
      # :::::ここまで
      # :::::ここから modeの文字数
      #p "MODE"
      #p text.index("MODE:")                  # modeが記載してある先頭からの位置
      modeclmn = text.index("MODE:") + 5
      #p text[modeclmn,1]
      modenum = text[modeclmn,1]             # modeの文字数
      #p modenum
      #p text[modeclmn+2,modenum.to_i]
      mode = text[modeclmn+2,modenum.to_i]   # mode種別 CW SSB FT8等
      #p mode
      file2.print(mode + "," )
# :::::ここまで
# :::::ここから code,GL,QSL,Name,QTH,Rem1,Rem2,は空欄とする DC12には0を入れる?
      file2.print(",,,,,,,0\n")
# :::::ここまで
    end
end
file.close
file2.close
:::::::::::::::::::::::::cqrtohamlog.rbの内容終わり::::::::::::::::

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。