从每个文本文件中删除最后一个空行

时间:2017-05-24 19:12:12

标签: python

我有很多文本文件,每个文件都有一个空行。我的脚本似乎没有删除它们。有人可以帮忙吗?

# 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() 

5 个答案:

答案 0 :(得分:2)

您可以使用以下方法删除最后一个空行:

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

答案 1 :(得分:2)

您可以使用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)

这将删除文件末尾的所有空行。如果没有空行,它将不会更改文件。

答案 2 :(得分: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中的最后一个元素除外,这是空的线。

答案 3 :(得分:0)

我认为这应该可以正常工作

new_file.write(f[:-1])

答案 4 :(得分:0)

您可以通过以下命令删除最后一个空行。这对我有用:

file = open(file_path_src,'r')
lines = file.read()
with open(file_path_dst,'w') as f:
    for indx, line in enumerate(lines):    
       f.write(line)
       if indx != len(lines) - 1:
          f.write('\n')