2013-12-08 60 views
0

我有這段代碼來讀取文件夾中的文本文件,對列進行一些分析並輸出新列。奇怪的是,我得到了一些偏離應該的位置的最後一排。我發現更改segment大小會影響最後一行,但找不到解決方案。爲什麼在這段代碼中打印空單元格?_Python

我真的很感激,如果有人可以看看它,並告訴我做錯了請。

files_ = glob.glob('D:\Test files\*.txt') 
tfile_ = loadtxt('times.txt') 

def cum_sum(lis): 
    total = 0 
    for x in lis: 
     total += x[1] 
     yield total 

averages_ = [] 
d = [] 

with open ('outfile.csv', 'wb') as outfile: 
    writer = csv.writer(outfile) 

    for fcount_, fname_ in enumerate(files_): 
     tzero_ = int(round(tfile_[fcount_],1)) 

     data = loadtxt(fname_ , usecols = (1,2,3,4), skiprows = tzero_) 

     average_, f_column, average_original, fcol = [], [], [], [] 
     segment_size = 2 
     background_average = mean(data[0:5,0]) 

     for x in range(0, len(data[:,0]), segment_size): 
      sample_means = [x/segment_size] + [mean(((data[x:x+segment_size,i])-(background_average))/10.467) for i in range(4)] 
      none_zeros = [x if x >= 0 else x == 0 for x in sample_means] 
      float_means = ["%1f" % (x) for x in none_zeros]    
      average_original.append(sample_means) 
      average_.append(float_means) 

     fcol = list(cum_sum(average_original)) 
     average_ = [row + [col] for row, col in zip(average_, fcol)] 
     averages_.append(average_) 

    for row in izip_longest(*averages_, fillvalue = ['']): 
     writer.writerow(list(chain.from_iterable(row))) 

輸入數據:

的1.txt

2013-08-29T15:11:18.55912 0.019494552 0.110042184 0.164076427 0.587849877 8.5 
2013-08-29T15:11:18.65912 0.036270974 0.097213155 0.122628797 0.556928624 8.6 
2013-08-29T15:11:18.75912 0.055350041 0.104121094 0.121641949 0.593113069 8.7 
2013-08-29T15:11:18.85912 0.057159263 0.107410588 0.198122695 0.591797271 8.8 
2013-08-29T15:11:18.95912 0.05288292 0.102476346 0.172958062 0.591139372 8.9 
2013-08-29T15:11:19.05912 0.043507861 0.104121094 0.162102731 0.598376261 9 
2013-08-29T15:11:19.15912 0.068343545 0.102805296 0.168517245 0.587849877 9.1 
2013-08-29T15:11:19.25912 0.054527668 0.105765841 0.184306818 0.587191978 9.2 
2013-08-29T15:11:19.35912 0.055678991 0.107739538 0.169997517 0.539165352 9.3 
2013-08-29T15:11:19.45912 0.05321187 0.102476346 0.167530397 0.645744989 9.4 

2.txt

2013-08-29T15:11:19.35912 0.055678991 0.107739538 0.169997517 0.539165352 9.3 
2013-08-29T15:11:19.45912 0.05321187 0.102476346 0.167530397 0.645744989 9.4 
2013-08-29T15:11:19.55912 0.055021092 0.103134245 0.158155337 0.604955251 9.5 
2013-08-29T15:11:19.65912 0.054363193 0.103463195 0.154207944 0.587191978 9.6 
2013-08-29T15:11:19.75912 0.045974982 0.096555256 0.179372577 0.613507938 9.7 
2013-08-29T15:11:19.85912 0.054527668 0.103463195 0.166543548 0.587191978 9.8 
2013-08-29T15:11:19.95912 0.058310586 0.10050265 0.152727671 0.599692059 9.9 
2013-08-29T15:11:20.05912 0.056830314 0.097542105 0.170490942 0.591797271 10 
2013-08-29T15:11:20.15912 0.056830314 0.099186852 0.180852849 0.59903416 10.1 
2013-08-29T15:11:20.25912 0.056172415 0.102805296 0.152234247 0.609560544 10.2 
2013-08-29T15:11:20.35912 0.056994789 0.101818448 0.170984366 0.586534079 10.3 
2013-08-29T15:11:20.45912 0.050909224 0.10609479 0.148286854 0.599692059 10.4 
2013-08-29T15:11:20.55912 0.081994947 0.099186852 0.162596155 0.597718362 10.5 
2013-08-29T15:11:20.65912 0.056830314 0.101160549 0.139898643 0.593770968 10.6 
2013-08-29T15:11:20.75912 0.061271131 0.101489498 0.135457826 0.583244584 10.7 

3 .TXT

2013-08-29T15:17:22.15912 0.118672813 5.650572169 4.684839266 2.462863007 372.1 
2013-08-29T15:17:22.25912 0.108310905 5.51635861 4.67398387 2.374046541 372.2 
2013-08-29T15:17:22.35912 0.135613712 5.414382684 4.676944432 2.366151744 372.3 
2013-08-29T15:17:22.45912 0.105843784 5.294643278 4.630562289 2.37602024 372.4 
2013-08-29T15:17:22.55912 0.116699116 5.177535575 4.667569318 2.35233585 372.5 
2013-08-29T15:17:22.65912 0.119330712 5.056480492 4.711484329 2.357599048 372.6 
2013-08-29T15:17:22.75912 0.12097546 4.973913071 4.672503588 2.356283248 372.7 
2013-08-29T15:17:22.85912 0.121304409 4.881148118 4.638950548 2.354967449 372.8 
2013-08-29T15:17:22.95912 0.122126783 4.783777856 4.665595609 2.367467544 372.9 
2013-08-29T15:17:23.05912 0.114560945 4.739369136 4.646351954 2.35167795 373 
2013-08-29T15:17:23.15912 0.127718924 4.688381358 4.647832235 2.432599618 373.1 
2013-08-29T15:17:23.25912 0.125251803 4.659104509 4.632535997 2.30759867 373.2 
2013-08-29T15:17:23.35912 0.127061025 4.630156618 4.621187175 2.345756853 373.3 
2013-08-29T15:17:23.45912 0.126238651 4.613708955 4.619706894 2.348388452 373.4 

4.txt

2013-08-29T15:17:24.35912 0.131172894 4.675223223 4.498817288 2.361546446 374.3 
2013-08-29T15:17:24.45912 0.148936166 4.672591596 4.485988189 2.370099142 374.4 
2013-08-29T15:17:24.55912 0.118014914 4.68278915 4.567897059 2.362204346 374.5 
2013-08-29T15:17:24.65912 0.116699116 4.691341938 4.472665663 2.379309739 374.6 
2013-08-29T15:17:24.75912 0.124758379 4.690355078 4.442566625 2.414178425 374.7 
2013-08-29T15:17:24.85912 0.133804489 4.698907866 4.46378398 2.35233585 374.8 
2013-08-29T15:17:24.95912 0.130186045 4.705486934 4.444540332 2.348388452 374.9 
2013-08-29T15:17:25.05912 0.132653166 4.716342396 4.450954881 2.345756853 375 
2013-08-29T15:17:25.15912 0.135284762 4.723908325 4.43861921 2.30891447 375.1 
2013-08-29T15:17:25.25912 0.134791338 4.738053323 4.431217808 2.304967072 375.2 
2013-08-29T15:17:25.35912 0.132159742 4.753185182 4.3813817 2.32996726 375.3 

問題: 上面的代碼給出了這樣的輸出,其中第6和第7行移動一個列到右側。這是我不明白!

0 0 0.004933 0.006984 0.050252 -0.000307987 0 0.000101 0.004744 0.009797 0.051823 0.000100567 0 0 0.489086 0.433002 0.214708 -0.000531121 
1 0.000572 0.005341 0.013042 0.051823 0.000263989 1 0 0.00443 0.011399 0.052232 -0.000223134 1 0.000317 0.467982 0.437104 0.214016 -0.000213706 
2 0.000658 0.0052 0.011109 0.05198 0.000922391 2 0.000376 0.004336 0.010315 0.051792 0.000152422 2 0.000467 0.450524 0.433309 0.214425 0.00025299 
3 0.00058 0.005514 0.01224 0.049121 0.001502225 3 0.000273 0.004524 0.010787 0.052609 0.00042584 3 0.000412 0.439194 0.432814 0.217379 0.000664687 
4 0.000399 0.005106 0.011321 0.057009 0.001901351 4 0.00003 0.004807 0.010127 0.05154 0.000455696 4 0.000891 0.432579 0.430881 0.211125 0.001555651 
    5 0.001507 0.004446 0.009325 0.051792 0.001962634 5 0.000899 0.429624 0.430197 0.213199 0.002454472     
    6 0.000729 0.004572 0.007817 0.050598 0.002691747           

BTW, times.txt是:

1.87 
2.3 
3.21 
2.84 

回答

0

它看起來像你的輸出由製表符分隔。

如果一個數據條目的寬度超過了製表符寬度(通常爲8個字符),它會將該行中的所有後續條目推到那麼多。

+0

我的實際輸入文件有大約60-70k行,這隻發生在最後的3-5行。其餘的都很好。 – PyLearner