Найти - Пользователи
Полная версия: Вопрос о вводе с консоли
Начало » Python для новичков » Вопрос о вводе с консоли
1
Tucha
Столкнулся с задачей в которой исходные данные (которые программа должна будет обработать) представляются в виде ввода четырёх СТРОК с некими значениями. У меня возникли вопросы:
1) как вызывая программу предоставить ей в виде аргументов, несколько строк ?
2) способны ли на такой ввод все консоли ? (в частности консоль Windows)
3) сможет ли такой ввод принять функция sys.argv ?

Я понимаю, что вопрос не совсем по python, но скорее всего у меня по этой задачи ещё вопросы возникнут, так что я решил сразу тут топ создать.
py.user.next
Tucha
1) как вызывая программу предоставить ей в виде аргументов, несколько строк ?
Можно и через стандартный поток ввода (stdin), и через аргументы командной строки вводить. Зависит от задачи.
stdin обычно используется под обрабатываемые данные, а аргументы командной строки - под параметры обработки/вывода.

Tucha
2) способны ли на такой ввод все консоли ? (в частности консоль Windows)
Да. Можно и через stdin, и через аргументы во всех консолях.

Tucha
3) сможет ли такой ввод принять функция sys.argv ?
Сможет. Но данные лучше подавать на stdin.

Tucha
py.user.next
Можно и через стандартный поток ввода (stdin), и через аргументы командной строки вводить. Зависит от задачи.
stdin обычно используется под обрабатываемые данные, а аргументы командной строки - под параметры обработки/вывода.
А можно пример ввода ?
Я просто хочу понять как передать аргумент командный строки именно четырьмя строками, а не строку с четырьмя значениями разделённых пробелами.
doza_and
py.user.next
3) сможет ли такой ввод принять функция sys.argv ?
Сможет. Но данные лучше подавать на stdin.
Когда это sys.argv успела стать функцией?
Tucha
Я понимаю, что вопрос не совсем по python
И это правильно что вы с этого начали.
Существует много точек зрения на взаимодействие программ со средой их обитания.
1) Программы реагируют на тыканье в кнопки и подачу напряжения на проводки (ранний дос) Похоже на вашу концепцию.
2) Программы принимают потоки байт преобразуют их и выдают другие потоки байт. И не важно это поток выливается с диска при чтении файла, образуется при тычках в кнопки приходит по сети или есть результат оцифровки звука. (Unix подход).
https://en.wikipedia.org/wiki/Unix_philosophy
ну и так далее…
py.user.next
doza_and
Когда это sys.argv успела стать функцией?
Я что-то даже и не заметил, что он там написал это слово, наискосок читал.

Tucha
А можно пример ввода ?
Я просто хочу понять как передать аргумент командный строки именно четырьмя строками, а не строку с четырьмя значениями разделённых пробелами.
#!/usr/bin/env python3
 
import sys
 
print(sys.argv)
[guest@localhost py]$ ./t.py
['./t.py']
[guest@localhost py]$ ./t.py a
['./t.py', 'a']
[guest@localhost py]$ ./t.py a b c
['./t.py', 'a', 'b', 'c']
[guest@localhost py]$ ./t.py "a b c"
['./t.py', 'a b c']
[guest@localhost py]$ ./t.py "a b c" "d e f"
['./t.py', 'a b c', 'd e f']
[guest@localhost py]$ ./t.py "a b c" "d e f" g h i
['./t.py', 'a b c', 'd e f', 'g', 'h', 'i']
[guest@localhost py]$
Tucha
Спасибо всем, с горем пополам разобрался, что такое stdin, stdout (я даже не знал, что есть ещё что то кроме input и sys.argv).
Теперь хоть понимаю, что значит ввод “нескольких строк” в условии задачи.

py.user.next
Я как раз хотел увидеть пример с stdin
py.user.next
Tucha
Я как раз хотел увидеть пример с stdin
#!/usr/bin/env python3
 
import sys
 
lines = list(sys.stdin)[:4]
print(lines)
[guest@localhost py]$ ./t.py 
a
b
c c
d
e
f
['a\n', 'b\n', 'c c\n', 'd\n']
[guest@localhost py]$

Tucha
я даже не знал, что есть ещё что то кроме imput
input() тоже с stdin работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB