#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. спасибо, но я не хочу использовать скрипт, я хочу сделать это из командной строки