Python 2.7.15 добавляет новую строку в Windows до конца, но не в Linux.Как это исправить? - PullRequest
0 голосов
/ 26 января 2019

Это , а не типичный вопрос "как мне удалить новую строку или пробел" ...

Я новичок в Python в целом.Но я знаю, что

print ("test", end="")
print ("test", end="")

для Python 3 и

print "test",
print "test",

для Python 2

Реализация Python 3 будет печататься правильно на компьютерах с Linux и Windows;однако реализация Python 2 добавит дополнительную строку в конце выполнения на компьютерах под управлением Windows (но не в Linux, там она печатается правильно).Есть ли способ избавиться от этой новой строки?

Я искал вокруг и, похоже, не могу найти никого, кто бы говорил об этой конкретной проблеме.Вот скриншот для демонстрации:

New Line issue in Windows Python 2

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

После разговора с несколькими людьми об этом и проведения некоторых исследований.Похоже, самым простым способом решения этой проблемы является непосредственное использование:

sys.stdout.write()

вместо печати.Затем вы можете отформатировать свой вывод аналогично тому, как работают C / C ++ и Java.

0 голосов
/ 26 января 2019

Итак, в соответствии с печатной документацией

Стандартный вывод определяется как файловый объект с именем stdout

И мы, вероятно, предполагаем, чтоОперации ввода-вывода Python зависят от системы, поэтому мы можем попытаться угадать объяснение этой ситуации, даже если в документации печати указано:

В конце пишется символ '\ n', если толькооператор print заканчивается запятой.

ИЛИ Причина в том, что угроза для Windows & Linux print выражается по-разному (поскольку print - это оператор в Python 2, а вызов функции в Python 3).

Возвращаясь к вопросу, как избавиться от этой строки:
Я использовал future выражение для функции печати:

from __future__ import print_function

print('test', end=' ')
print('test', end='')

Если я найду какое-либо разумное объяснение, я обновлю ответ (должен быть где-то!).

...