Форум сайта python.su
44
Подскажите как сделать конвертер в Python программе типа такого:
echo q1werty | sed "s/1/2/g"
import sys try: print(f"{sys.argv[1]}\n" * 5) except Exception as err: print(f"err {err}")
и вставьте ссылку на его url Отредактировано AD0DE412 (Янв. 22, 2021 18:23:59)
Офлайн
294
AD0DE412 нужно читать stdin и писать в stdout
По умолчанию input() читает данные из stdin, print() печатает данные в stdout. Так что обычно их и хватает.
Но можно использовать и sys.stdin, sys.stdout
При запуске Питона, sys.stdin/sys.stdout обычно указывают на стандартные потоки ввода/вывода, унаследованные от родительского процесса или полученные от консоли.
Работа напрямую с sys.stdin, sys.stdout такая же как с другими текстовыми файлами.
пример:
for line in sys.stdin: print(line.rstrip('\n'))
<countlines.py>
import sys
data = sys.stdin.readlines()
print ("Counted", len(data), "lines.")
$ cat countlines.py | python countlines.py
Counted 3 lines.
[code python][/code]
Отредактировано PEHDOM (Янв. 21, 2021 21:10:44)
Офлайн
253
AD0DE412Конвеер реализуется командной оболочкой. Если у вас нет дополнительных требований то ей и надо пользоваться.
Подскажите как сделать конвертер в Python программе типа такого:
import subprocess as sp sp.run('echo q1werty | sed "s/1/2/g"',shell=True)
Офлайн
857
>>> import subprocess >>> >>> cmd = subprocess.run( ... """echo x | tr x X""", ... shell=True, ... stdout=subprocess.PIPE) >>> >>> cmd CompletedProcess(args='echo x | tr x X', returncode=0, stdout=b'X\n') >>> cmd.stdout b'X\n' >>>
Отредактировано py.user.next (Янв. 22, 2021 01:19:28)
Офлайн
44
решено (ну почти … там ерунда осталась)
import sys if len(sys.argv[1:]): print(f"{sys.argv[1:]}" * 5) else: data = sys.stdin.readlines() print(f"{data}" * 5))
и вставьте ссылку на его url Отредактировано AD0DE412 (Янв. 22, 2021 18:26:01)
Офлайн