python написать пустую строку в начале - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь прочитать файл gz и очистить его (удалить все \ n и \ r) и записать его в новый файл. Но новый файл начинается с пустой строки.

Как исправить?

Мой код:

import json
import urllib
import boto3
import re
import gzip
import os
inputdir='/tmp/bhuvi/'
for filename in os.listdir(inputdir):
    with gzip.open('/tmp/bhuvi/'+file_name, 'rb') as f,open('/tmp/new/custom'+file_name.replace('.gz',''), 'w') as fout:
                file_content = str(f.read().decode('utf-8'))
                fout.write(file_content)

                #read lines from the new file and repalce all new lines 
                #Credits for this piece PMG.COM
                with open('/tmp/new/custom'+file_name.replace('.gz',''), 'r', encoding='utf-8') as log_file:
                    log_data = log_file.read().replace('\n', ' ')
                log_data = re.sub(r'(\'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z UTC)', '\n \\1', log_data)
                newlog = re.sub(r'^\s*$', '', log_data)

                #write the formatter lines to a file
                with open('/tmp/new/cleansed_'+file_name.replace('.gz','')+'.txt', 'w') as fout:
                    fout.writelines(newlog)

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Трудно сказать без файла, но я предполагаю, что пустая строка исходит из файла, который вы читаете. Убедитесь, что:

  • Вы strip() каждую строку после ее прочтения.
  • У вас есть оператор if, который записывает строку только в том случае, если она не равна нулю.
0 голосов
/ 28 мая 2020

Вы можете использовать первую итерацию newlog, добавив эти строки перед fout.writelines(newlog):

newlog = iter(newlog)
next(newlog)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...