Python в Windows: программирование из командной строки

#python #windows #command-line

#python #Windows #командная строка

Вопрос:

Я хочу писать простые многострочные программы на python из cmd, что я хочу сделать, это передать аргумент, затем выполнить некоторые манипуляции и сохранить вывод в текстовый файл, я нашел несколько примеров в Интернете, но у меня ничего не работает.
например, вот что я хочу сделать:
>echo "230-20-5" | python -c "[commands]" > output.txt
Я хочу разделить его, взять каждое число и добавить 5 к каждому, а затем суммировать результаты, чтобы output.txt должно быть:
235
25
10
the result is : 270

Кстати, если кто-нибудь может дать мне онлайн-учебник, это было бы большое
спасибо.

Комментарии:

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

2. потому что было бы здорово использовать канал с командами Windows 🙂

3. Я полагаю, вы всегда можете запустить скрипт python из командной строки!

4. да, но это было бы не то же самое, этот метод позволит вам сэкономить время

5. вы спрашиваете, что должно входить в «[команды]» или как вы выполняете перенаправление ввода-вывода в Windows?

Ответ №1:

Да, я спрашиваю, что должно входить в [команды], я знаю, как выполнять простые однострочные команды, такие как> python -c «print ‘Hello’ » > output.txt но не команды с несколькими строками

Понятия не имею, почему вы хотите это сделать, но вот и все:

 >> echo "230-20-5" | python2.7 -c "exec("inp=raw_input()nlst=[int(x) 5 for x in inp.split('-')]nfor x in lst: print xnprint 'the result is:', sum(lst)")" > out
 

out будет содержать:

 235
25
10
the result is: 270
 

Я тестировал это с помощью bash, поэтому вам могут потребоваться незначительные корректировки для любой оболочки, которую вы используете под Windows.

Комментарии:

1. у меня не получилось Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1, in <module> File "<string>", line 1 "230-20-5" ^ SyntaxError: unexpected character after line continuation character

2. @user2776193 да, это, вероятно, потому, что вам нужно экранировать » и » по-разному в вашей оболочке. Общий подход , однако , заключается в использовании exec("command1ncommand2") , разделении команд с. n

3. Хорошо, чтобы заставить его работать в Windows, вам нужно только удалить escape-хартию из echo следующим образом echo "230-20-5" | ....

4. Теперь, когда я могу использовать python из командной строки, я больше не буду пропускать команды bash в строке sed, grep и awk и т. Д. И т. Д. 🙂

Ответ №2:

Поместите следующий код в файл, скажем foo_bar.py

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("val")
args = parser.parse_args()

for i in args.val.split('-'):
    print int(i)   5
    sum  = int(i)   5
print 'the result is', sum
 

Теперь из командной строки введите:

 python foo_bar.py 230-20-5  > output.txt
 

Вы также можете попробовать ввести код напрямую, используя:

 python -c "import argparse;parser = argparse.ArgumentParser();parser.add_argument('val');args = parser.parse_args();for i in args.val.split('-'):print int(i)   5;" 230-20-5 > output.txt
 

Хотя я не мог заставить его работать!!!

Комментарии:

1. спасибо, но я не хочу использовать скрипт, я хочу сделать это из командной строки