Как удалить пустые строки в текстовом файле на компьютере с Windows - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь удалить все пустые строки во всех файлах 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()

Вот представление в Блокноте ++

enter image description here

Я хочу удалить самую первую строку, показанную здесь, а также все остальные пустые строки.Спасибо.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Если вы используете python, вы можете обновить строку, используя:

re.sub(r'[\s\r\n]','',line)

Закройте обработчик файла чтения перед записью.

Если вы используете Notepad ++, установите плагин с именем TextFX.

  1. Заменить все вхождения \ r \ n пустыми.
  2. Выделить весь текст
  3. Использовать новое меню TextFX -> Редактирование TextFX -> E: Удалить пустоеСтроки

Надеюсь, это поможет.

0 голосов
/ 21 ноября 2018

Это красиво и просто ...

file_path = "C:\\Users\\ryans\\OneDrive\\Desktop\\output\\*.yaml"

with open(file_path,"r+") as file:
    lines = file.readlines()
    file.seek(0)
    for i in lines:
        if i.rstrip():
            file.write(i)

Там, где вы открываете файл, читаете строки, и если они не пустые, запишите их обратно.

0 голосов
/ 21 ноября 2018

Вы не можете записать файл, в котором вы сейчас читаете. Кроме того, вы удаляете вещи через 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
...