バイナリファイルを変換して出力されるjsonログを別のファイルで受け取ると、jsonデータの一つ分しか取得できない。
##やりたいことの全体像
システムから出力されるバイナリファイルをjsonに変換するpythonファイルがある。現在、その出力されたjsonデータはコマンド上に表示させているが、今後は別のpythonファイルで受け取り、tkinterに表示したい。
##困っていること
現在、データを受け取り、表示させるところまでは完成したが、正しく表示されない。数十〜数百行あるデータの1つのみを取得し、culc_関数により同じデータ100件が表示されてしまう。
python
1#logger.py こちらを主として動かす 2from tkinter import messagebox 3import tkinter 4from tkinter import * 5from tkinter import ttk 6from tkinter import filedialog 7import os 8import datetime 9import to_json 10def writeToLog(msg): 11 numlines = int(log.index('end - 1 line').split('.')[0]) 12 log['state'] = 'normal' 13 #if numlines==24: 14 # #log.delete(1.0, 2.0) 15 if log.index('end-1c')!='1.0': 16 log.insert('end', '\n') 17 log.insert('end', msg) 18 log['state'] = 'disabled' 19def calc_(): 20 for i in range(100): 21 writeToLog(str(i)) 22if __name__ == '__main__': 23 # ウィンドウを作成 24 root = tkinter.Tk() 25 root.title("ツール名") 26 # アプリの名前 27 root.geometry("800x600") # アプリの画面サイズ 28 # Frame1の作成 29 frame1 = ttk.Frame(root, padding=10) 30 frame1.grid() 31 # # 検索ボタンの作成 32 refer_button = ttk.Button(frame1, text=u'出力ボタン', command=calc_) 33 refer_button.grid(row=3, column=1) 34 log = Text(root, state='disabled',borderwidth=5, width=110, height=30, wrap='none', padx=10,pady=10) 35 ys = ttk.Scrollbar(root, orient = 'vertical', command = log.yview) 36 log['yscrollcommand'] = ys.set 37 #log.insert('end', "Lorem ipsum...\n...\n...") 38 log.grid(row=4, column=0) 39 ys.grid(column = 1, row = 4, sticky = 'ns') 40 # ウィンドウを動かす 41 root.mainloop() 42
python
1#to_json.py ファイルの読み込み、出力を行う 2with log.file(sys.argv[1]) as log: 3 for msg in log: 4 if msg: 5 msg = output(msg) 6
ちなみに別ファイルに呼び出した時点で、データは一つになってしまっているようです。
回答1件
あなたの回答
tips
プレビュー