2017-05-24 202 views
3

我有很多文本文件,每個文件末尾都有空行。我的腳本似乎沒有刪除它們。任何人都可以幫忙嗎?從每個文本文件中刪除最後一個空行

# python 2.7 
import os 
import sys 
import re 

filedir = 'F:/WF/' 
dir = os.listdir(filedir) 

for filename in dir: 
    if 'ABC' in filename: 
     filepath = os.path.join(filedir,filename) 
     all_file = open(filepath,'r') 
     lines = all_file.readlines() 
     output = 'F:/WF/new/' + filename 

     # Read in each row and parse out components 
     for line in lines: 
      # Weed out blank lines 
      line = filter(lambda x: not x.isspace(), lines) 

      # Write to the new directory 
      f = open(output,'w') 
      f.writelines(line) 
      f.close() 
+0

一個注意:你重新分配給'dir'命名空間'os.listdir(filedir)'。這意味着你正在寫內建的'dir'函數,這是不推薦的。雖然它不會影響你的輸出,但這是一種「風格」考慮。 – blacksite

+0

好點!稍後會嘗試改進代碼。 – user8061394

回答

2

您可以使用刪除最後一個空行:

with open(filepath, 'r') as f: 
    data = f.read() 
    with open(output, 'w') as w: 
     w.write(data[:-1]) 
1

你可以試試這個沒有使用re模塊:

filedir = 'F:/WF/' 
dir = os.listdir(filedir) 

for filename in dir: 
    if 'ABC' in filename: 
     filepath = os.path.join(filedir,filename) 

     f = open(filepath).readlines() 
     new_file = open(filepath, 'w') 
     new_file.write('') 
     for i in f[:-1]: 

      new_file.write(i) 

     new_file.close() 

對於每個文件路徑,代碼打開文件,其內容讀取一行行,然後寫入了文件,最後將f的內容寫入文件,除了f中的最後一個元素(空行)外。

+0

感謝您的意見。但由於某些原因,這些空行仍然存在...... – user8061394

0

我想這應該能正常運行

new_file.write(f[:-1]) 
1

您可以使用Python的rstrip()功能來做到這一點,如下所示:

filename = "test.txt" 

with open(filename) as f_input: 
    data = f_input.read().rstrip('\n') 

with open(filename, 'w') as f_output:  
    f_output.write(data) 

這將刪除文件末尾的所有空行。如果沒有空行,它不會更改文件。

相關問題