Переопределение поведения поколения новой строки оператора печати Python

Можно передать параметрические усилители к antcall использование вложенного в antcall блоке. Так, можно передать свойства вниз тот путь (вероятно, даже basedir, так как свойства неизменны).

8
задан brotchie 4 November 2009 в 23:36
поделиться

6 ответов

Вы должны решить вашу проблему сейчас и навсегда, определив новую функцию вывода. Если бы функция была напечатана, это было бы намного проще.

Я предлагаю написать новую функцию вывода, имитирующую как можно большую часть современной сигнатуры функции печати (потому что повторное использование хорошего интерфейса - это хорошо), например:

def output(*items, end="\n", file=sys.stdout):
    pass

После того, как вы заменили все рассматриваемые отпечатки, у вас больше не будет этой проблемы - вместо этого вы всегда можете изменить поведение своей функции! Это большая причина, по которой print была сделана функцией в Python 3 - потому что в Python 2.x «все» проекты неизменно проходят стадию, когда все операторы print больше не являются гибкими, и там выход не из легких.

11
ответ дан 5 December 2019 в 07:11
поделиться

(Not sure how/if this fits with the wrapper you intend to use, but in case...)

In Python 2.6 (and many preceding versions), you can suppress the newline by adding a comma at the end of the print statement, as in:

data = 'some msg\r\n'
print data,  # note the comma

The downside of using this approach however is that the print syntax and behavior is changed in Python3.

8
ответ дан 5 December 2019 в 07:11
поделиться

В python2.x, я думаю, вы можете сделать:

print >>f "some msg\r\n",

, чтобы подавить завершающую новую строку.

В python3.x это намного проще:

print("some msg", end = "\r\n", file = f)
4
ответ дан 5 December 2019 в 07:11
поделиться

Я также предпочитаю ваше третье решение, но не нужно использовать f.write, подойдет любая написанная пользователем функция / вызываемая функция. Таким образом, следующие изменения станут легкими. Если вы используете объект, вы можете даже скрыть целевой файл внутри него, таким образом удалив некоторый синтаксический шум, такой как файл или разновидность новой строки.

Слишком плохая печать - это утверждение в python 2.x, с python 3.x печать может быть просто перегружена что-то определенное пользователем.

0
ответ дан 5 December 2019 в 07:11
поделиться

Думаю, я бы определил новую функцию Writeline в унаследованном классе файла / потока и обновил код, чтобы использовать Writeline вместо print . Сам файловый объект может содержать стиль окончания строки как член. Это должно дать вам некоторую гибкость в поведении, а также сделать код немного понятнее, например f.writeline (text) в отличие от f.write (text + line_end) .

.
0
ответ дан 5 December 2019 в 07:11
поделиться

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

0
ответ дан 5 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: