2017-02-15 3 views
0

열과 데이터를 추출하려고하는 텍스트 파일이 있습니다. 데이터의 샘플은 다음과 같은 :파이썬을 사용하여 텍스트 파일의 열에 필드 추가

나는 그런 다음 새로운으로, 이들의 각 반복에 대한 값을 추가 ... 등등 총-TX, 드롭 속도 등의 항목에서 열을 만들 취할 필요
-Global stats enabled 
Cpu Utilization : 0.1 % 45.4 Gb/core 
Platform_factor : 1.0 
Total-Tx  :  270.75 Mbps 
Total-Rx  :  0.00 bps 
Total-PPS  :  37.98 Kpps 
Total-CPS  :  0.00 cps 

Expected-PPS :  102.71 Kpps 
Expected-CPS :  2.78 Kcps 
Expected-BPS :  764.51 Mbps 

Active-flows :  366 Clients :  252 Socket-util : 0.0023 %  
Open-flows  :  2792 Servers : 65534 Socket :  366 Socket/Clients : 1.5 
drop-rate  :  270.75 Mbps 
current time : 7.6 sec 
test duration : 3592.4 sec 

-Latency stats enabled 
Cpu Utilization : 0.0 % 
if| tx_ok , rx_ok , rx check ,error,  latency (usec) , Jitter   max window 
    |   ,  ,   ,  , average , max , (usec)      
---------------------------------------------------------------------------------------------------------------- 
0 |  1116,  0,   0, 0,   0 ,  0,  0  | 0 0 0 0 0 0 0 0 0 0 0 0 0 
1 |  1116,  0,   0, 0,   0 ,  0,  0  | 0 0 0 0 0 0 0 0 0 0 0 0 0 
2 |  1116,  0,   0, 0,   0 ,  0,  0  | 0 0 0 0 0 0 0 0 0 0 0 0 0 
3 |  1116,  0,   0, 0,   0 ,  0,  0  | 0 0 0 0 0 0 0 0 0 0 0 0 0 
[2J[2H 
-Per port stats table 
     ports |    0 |    1 |    2 |    3 
----------------------------------------------------------------------------------------- 
    opackets |   30391 |   48748 |   30360 |   48696 
    obytes |   2468147 |  68386300 |   2465677 |  68310324 
    ipackets |    0 |    0 |    0 |    0 
    ibytes |    0 |    0 |    0 |    0 
    ierrors |    0 |    0 |    0 |    0 
    oerrors |    0 |    0 |    0 |    0 
     Tx Bw |  4.77 Mbps |  130.69 Mbps |  4.76 Mbps |  130.53 Mbps 

열.

현재 나는 그러나 csv 파일에 관련 데이터가있는 행을 추가 도움이 필요, 열을 추출 할 수 있습니다 :

import csv 
import itertools 

with open('output.txt', 'r') as in_file: 
    stripped = (line.strip() for line in in_file) 
    lines = (line for line in stripped if line) 
    grouped = itertools.izip(*[lines] * 4) 
    with open('output_stats.csv', 'w') as out_file: 
     writer = csv.writer(out_file) 
     writer.writerow(('current time', 'drop-rate', 'Total-Tx', 'Total-Rx')) 
     writer.writerows(grouped) 

답변

0

당신이 분석하고 -Global stats enabled 섹션의 항목을 저장 하시겠습니까?

아마도 을 사용하면 과장 될 수도 있습니다. 기본 문자열 split을 사용하는 것이 좋습니다.

거기에 하나의 콜론 :와 선 (당신이 값으로 키를 오른쪽으로 왼쪽으로, 두 항목의 목록을 제공합니다 split(:)를 사용하여, str.count)를 사용할 수 있습니다.

을 줄 경우 하나 이상의에 대한

콜론, 먼저 Socket-util에서 %에 특별한주의와 함께, 콜론 및 공백으로 분할 할 수 있습니다. 그것은 (Making a flat list out of list of lists in Python를 참조 목록을 평평하게해야 할 수도 있습니다) [key1, value1, key2, value2, ...]의 목록을 제공합니다.

이 그럼 당신은 같은 키를 쓸 수

열 이름 및 해당 값

ASCII 테이블을 구문 분석하여 -Latency stats enabled 섹션에 저장하려는 경우 pandas을 사용해 볼 수 있습니다 (How to create a Pandas DataFrame from String 참조).

+0

예,이 시점에서 나는':' 을 포함하는 행에 대한 항목 만 저장하면되므로'split (:)'을 사용해 볼 수 있습니다. –