首页 > 解决方案 > 如何在windows机器上删除文本文件中的空白行

问题描述

我正在尝试删除文件夹中所有 YAML 文件中的所有空白行。我有多行只有 CRLF(使用 Notepad++),我似乎无法消除这些空白行。和往常一样,我在发布之前对此进行了研究,但我似乎无法使其正常工作。

import glob
import re
path = 'C:\\Users\\ryans\\OneDrive\\Desktop\\output\\*.yaml'

for fname in glob.glob(path):
    with open(fname, 'r') as f:
        sfile = f.read()
        for line in sfile.splitlines(True):
            line = sfile.rstrip('\r\n')
            f = open(fname,'w')
            f.write(line)
            f.close()

这是记事本++中的一个视图

在此处输入图像描述

我想删除此处显示的第一行以及所有其他空白行。谢谢。

标签: pythonpython-3.xblank-line

解决方案


您无法写入当前正在读取的文件。此外,您还可以file.splitlines()从每一行中删除内容-这样您将删除所有 \r\n内容-不仅是空行中的内容。以新名称存储内容,然后删除/重命名文件:

创建演示文件:

with open ("t.txt","w") as f:
    f.write("""

asdfb 

adsfoine 

""")

从中加载/创建新文件:

with open("t.txt", 'r') as r, open("q.txt","w") as w:
    for l in r:
        if l.strip(): # only write line if when stripped it is not empty
            w.write(l)

with open ("q.txt","r") as f:
   print(f.read())  

输出:

asdfb 
adsfoine 

(您需要换strip()行以查看它们是否包含空格换行符。)

有关重命名/删除,请参阅 fe如何使用 Python 重命名文件删除文件或文件夹

import os
os.remove("t.txt")               # remove original
os.rename("q.txt","t.txt")       # rename cleaned one

推荐阅读