Заменить символы новой строки пробелом во всех файлах в каталоге - Python - PullRequest
0 голосов
/ 05 июля 2018

У меня около 4000 текстовых файлов в каталоге. Я хотел бы заменить символы новой строки пробелами в каждом файле, используя цикл for. На самом деле, скрипт работает для этой цели, но когда я сохраняю файл, он не сохраняется или он снова сохраняется с символами новой строки. Вот мой сценарий;

import glob
path = "path_to_files/*.txt"
for file in glob.glob(path):
    with open(file, "r+") as f:
        data = f.read().replace('\n', ' ')
        f.write(data)

Как я уже сказал, я могу заменить символы новой строки пробелом, но в конце он не сохраняется. Я также не получаю никаких ошибок.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вам нужно сбросить положение файла до 0 с помощью seek, а затем обрезать остаток с помощью truncate после завершения записи строки замены.

import glob
path = "path_to_files/*.txt"
for file in glob.glob(path):
    with open(file, "r+") as f:
        data = f.read().replace('\n', ' ')
        f.seek(0)
        f.write(data)
        f.truncate()
0 голосов
/ 05 июля 2018

Для дальнейшей разработки моего комментария (" Почти всегда плохая идея открыть файл в режиме 'r +' (из-за способа обработки текущей позиции). Откройте файл для чтения, прочитайте данные , заменить символы новой строки, открыть тот же файл для записи, записать данные"):

for file in glob.glob(path):
    with open(file) as f:
        data = f.read().replace('\n', ' ')
    with open(file, "w") as f:
        f.write(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...