1
私は解析して.csvに再フォーマットしようとしているテキストファイルを持っています。テキストファイルは、2Hzごとに繰り返しステータスメッセージとして作成され、さまざまな値を出力します。すべてのメッセージにはヘッダー '-----------'、改行文字 '/ n'、フッター ''があります。繰り返しメッセージを解析するための最高のPythonのアプローチ
これを行う最善の方法は、一度に1つの「メッセージ」を読み込み、出力ファイルを更新できることです。私はPython(Python 3.5を使用しています)には新しく、私はすべてのC++スタイルになっていると思います。
入力データは次のようになります。
-----------
2016-10-10T14:03:38,158000277+0000
14:03:38 up 1 min, 2 users, load average: 0.58, 0.13, 0.04
acpitz-virtual-0
Adapter: Virtual device
temp1: +27.8°C (crit = +110.0°C)
temp2: +29.8°C (crit = +110.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +44.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +44.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +44.0°C (high = +105.0°C, crit = +105.0°C)
nct6776-isa-0a00
Adapter: ISA adapter
Vcore: +1.79 V (min = +0.00 V, max = +1.74 V) ALARM
in1: +1.35 V (min = +0.00 V, max = +0.00 V) ALARM
AVCC: +3.33 V (min = +2.98 V, max = +3.63 V)
+3.3V: +3.33 V (min = +2.98 V, max = +3.63 V)
in4: +1.00 V (min = +0.00 V, max = +0.00 V) ALARM
in5: +0.00 V (min = +0.00 V, max = +0.00 V)
in6: +0.27 V (min = +0.00 V, max = +0.00 V) ALARM
3VSB: +3.30 V (min = +2.98 V, max = +3.63 V)
Vbat: +3.20 V (min = +2.70 V, max = +3.63 V)
fan1: 0 RPM (min = 0 RPM)
fan2: 0 RPM (min = 0 RPM)
SYSTIN: +68.0°C (high = +0.0°C, hyst = +0.0°C) ALARM sensor = thermistor
CPUTIN: +22.5°C (high = +80.0°C, hyst = +75.0°C) sensor = CPU diode
AUXTIN: +28.5°C (high = +80.0°C, hyst = +75.0°C) sensor = CPU diode
PCH_CHIP_CPU_MAX_TEMP: +26.0°C (high = +80.0°C, hyst = +75.0°C)
PECI Agent 0: +44.0°C (high = +80.0°C, hyst = +75.0°C)
(crit = +105.0°C)
PCH_CHIP_TEMP: +0.0°C
PCH_CPU_TEMP: +0.0°C
intrusion0: OK
intrusion1: OK
私は等の温度、電圧、
、各メッセージの日付/時間のようなものを引き出したい。ここに私のスーパーです未Python的アプローチ(インデントをコピー&ペースト時に台無ししまったことに注意してください...それは、実際のコードで正しい):
with open('102_sensors.log', 'r') as readFile, open('output.txt','w') as writeFile:
for line in readFile:
if line.startswith('2016'):
writeFile.write(line[:10] + ',' + line[11:-1] + ',') #date and time
if 'load average' in line:
writeFile.write(line[13:15] + ',' + line[-17:-1] + ',') #up-time and load avgs
if 'temp1' in line:
writeFile.write(line[15:19] + ',')
if 'temp2' in line:
writeFile.write(line[15:19] + ',')
if 'Physical id 0' in line:
writeFile.write(line[17:21] + ',')
if 'Core 0' in line:
writeFile.write(line[17:21] + ',')
if 'Core 1' in line:
writeFile.write(line[17:21] + ',')
if 'Vcore' in line:
writeFile.write(line[25:29] + ',')
if 'in1' in line:
writeFile.write(line[25:29] + ',')
if 'AVCC' in line:
writeFile.write(line[25:29] + ',')
if 'threeV' in line:
writeFile.write(line[25:29] + ',')
if 'in4' in line:
writeFile.write(line[25:29] + ',')
if 'in5' in line:
writeFile.write(line[25:29] + ',')
if 'in6' in line:
writeFile.write(line[25:29] + ',')
if 'threeVSB' in line:
writeFile.write(line[25:29] + ',')
if 'Vbat' in line:
writeFile.write(line[25:29] + ',')
if 'SYSTIN' in line:
writeFile.write(line[25:29] + ',')
if 'CPUTIN' in line:
writeFile.write(line[25:29] + ',')
if 'AUXTIN' in line:
writeFile.write(line[25:29] + ',')
if '-----------' in line:
writeFile.write('\n')
continue
writeFile.close()
reモジュールは私が書いたものよりもどのように優れていますか?それは速いですか?読みやすい? – drone007