Форум сайта python.su
всем привет,
подскажите как реализовать передачу результата питон скрипта в другой скрипт python?
операционка винда
пока вижу решение вызов из питон скрипта вызов другого скрипта питон . Но хотелось бы покрасивее типа
get_value.py > script.py
или
get_value.py | script.py
что должно быть в питон скрипте ?
print value
чтобы переменная была успешно передана в script.au3?
операционка windows
P.S. по каким словам в гугле можно поискать как это сделать.
Большое спасибо.
Офлайн
а windows умеет pipes?
Офлайн
Я точно не знаю, как это тут называется, но ‘DIR | MORE’ и подобное умеет.
Хотя и не без проблем.
Отредактировано (Июль 30, 2008 06:49:43)
Офлайн
для этого ипользуются стандратные потоки ввода-вывода.
получить к ним доступ можно через модуль sys:
sys.stdin - входной поток
sys.stdout - выходной поток
sys.stderr - выходной поток для ошибок
Работать с ними можно как с файлами, но есть особенности….
Отредактировано (Июль 30, 2008 06:56:23)
Офлайн
код t1.py
import sys
sys.stdout.write('hello word')
import sys
a = sys.stdin.read()
print a
close failed: [Errno 22] Invalid argument
Traceback (most recent call last):
File "t2.py", line 2, in
<module>
a = sys.stdin.read()
IOError: [Errno 9] Bad file descriptor
Офлайн
передай через промежуточный файл 1.py > out && 2.py
Офлайн
cybergrindа как в 2.py получить то? через какую переменную? stdin?
передай через промежуточный файл 1.py > out && 2.py
Отредактировано (Июль 30, 2008 15:45:18)
Офлайн
предлагаю просто прочитать… можно конечно через popen… это будет наиболее похоже на то что ты хочешь
#2.py
stdin, stdout = os.popen4('1.py')
for s in stdout.read():
print '!',s
#1.py
print 'hello'
Отредактировано (Июль 30, 2008 15:56:25)
Офлайн
j2aда
а windows умеет pipes?
Офлайн
baluпосмотрите пожалуйстаj2aда
а windows умеет pipes?
import sys
sys.stdout.write(sys.stdin.read())
echo "hello python" | ./simple.py
Traceback (most recent call last):
File “D:\python\pipe\simple.py”, line 3, in
sys.stdout.write(sys.stdin.read())
IOError: [Errno 9] Bad file descriptor
import sys
def main(argv = sys.argv):
# detects whether have pipe line parsing in
if not sys.stdin.isatty():
for s in sys.stdin.readlines():
print "pipe: " + s,
# param
L = sys.argv[1:]
if len(L)!=0:
print "param: " + str(L)
sys.exit(0)
pass
if __name__ == "__main__":
try:
main(sys.argv)
except KeyboardInterrupt:
pass
D:\python\pipe>echo “wefwef” | toosimply.py
Traceback (most recent call last):
File “D:\python\pipe\toosimply.py”, line 18, in
main(sys.argv)
File “D:\python\pipe\toosimply.py”, line 7, in main
for s in sys.stdin.readlines():
IOError: [Errno 9] Bad file descriptor
Офлайн