Использование .rstrip () /. Strip () действительно работает только при чтении файла - и, очевидно, его нельзя использовать непосредственно при записи в файл, так как при этом все данные записываются в одну строку.
Это заблуждение. Использование .rstrip()
является абсолютно правильным инструментом, если вам нужно написать последовательность строк, для некоторых из которых может быть добавлен символ новой строки:
with open('compFile', 'w') as cFile:
for i in range(num_lines):
line = validLine().rstrip("\n") # remove possible newline
compressedFile.write(line + "\n")
Обратите внимание, что если все ваши строки уже имеют новую строку , вам не нужно добавлять новые строки. Просто напишите строку непосредственно в файл, не нужно удалять:
with open('compFile', 'w') as cFile:
for i in range(num_lines):
line = validLine() # line with "\n" newline already present
compressedFile.write(line) # no need to add a newline anymore
Далее вы читаете строки с символами новой строки из вашего файла и затем печатаете их с помощью print()
. По умолчанию print()
добавляет еще одну новую строку , поэтому в итоге вы получаете строки с двойным интервалом;Ваш входной файл содержит 023\n034\n045\n
, но при печати каждой строки ('023\n'
, затем '034\n'
, затем '045\n'
) впоследствии добавляется новая строка, и вы записываете 023\n\n034\n\n045\n\n
в stdout
.
Либо удалите эту новую строку при печати, либо скажите print()
, чтобы она не добавляла собственную новую строку, задав ей пустой параметр end
:
with open('compFile', 'r') as cFile:
for line in cFile:
print(line, end='')