Как я могу заставить эту однострочную работу работать в DOS? - PullRequest
5 голосов
/ 19 февраля 2009
python -c "for x in range(1,10) print x"

Мне нравятся лайнеры Python One с -c, но он ограничен, когда требуется отступ.

Есть идеи?

Ответы [ 6 ]

12 голосов
/ 19 февраля 2009
python -c "for x in range(1,10): print x"

Просто добавьте двоеточие.

Для решения вопроса в комментариях:

Как я могу заставить это работать? python -c "импорт календаря; печать calendar.prcal (2009); для x в диапазоне (1,10): печать x"

python -c "for x in range(1,10): x==1 and __import__('calendar').prcal(2009); print x;"

Как вы можете видеть, это довольно грубо. Мы не можем импортировать до цикла. Чтобы обойти это, мы проверяем, находится ли x на первой итерации в цикле, если это так, мы выполняем импорт.

Больше примеров здесь .

3 голосов
/ 19 февраля 2009
python -c "for x in range(1,10): print x"

Помните ":" !!

3 голосов
/ 19 февраля 2009

Не скрипт Python, но может помочь:

for /L %i in (1, 1, 10) do echo %i
1 голос
/ 19 февраля 2009

Вот решение, которое не требует добавления оператора после двоеточия, что не считается очень высоким.

python2 -c "print '\n'.join([str(x) for x in range(1,10)])"

Что более питонно, чем понимание списка!

1 голос
/ 19 февраля 2009

Разве вы не хотите этого?

python -c «для x в диапазоне (1,10): print x»

0 голосов
/ 19 февраля 2009
python -c 'print "\n".join(map(str, range(1,10)))'

а что не так в "реальном" скрипте python? (вы знаете, foo.py запущен через "python foo.py") Если вам действительно нравятся однострочники, я предлагаю perl:)

...