Найти - Пользователи
Полная версия: подскажите как реализовать передачу результата питон скрипта в другой
Начало » Python для экспертов » подскажите как реализовать передачу результата питон скрипта в другой
1 2
qman
всем привет,
подскажите как реализовать передачу результата питон скрипта в другой скрипт python?
операционка винда
пока вижу решение вызов из питон скрипта вызов другого скрипта питон . Но хотелось бы покрасивее типа
get_value.py > script.py
или
get_value.py | script.py
что должно быть в питон скрипте ?
print value
чтобы переменная была успешно передана в script.au3?
операционка windows
P.S. по каким словам в гугле можно поискать как это сделать.
Большое спасибо.
j2a
а windows умеет pipes?
shiza
Я точно не знаю, как это тут называется, но ‘DIR | MORE’ и подобное умеет.
Хотя и не без проблем.
shiza
для этого ипользуются стандратные потоки ввода-вывода.
получить к ним доступ можно через модуль sys:
sys.stdin - входной поток
sys.stdout - выходной поток
sys.stderr - выходной поток для ошибок

Работать с ними можно как с файлами, но есть особенности….
qman
код t1.py
import sys
sys.stdout.write('hello word')
код t2.py
import sys
a = sys.stdin.read()
print a
запускаю
t1.py | t2.py
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
а ожидал получить hello word!!! где неверен код?
cybergrind
передай через промежуточный файл 1.py > out && 2.py
qman
cybergrind
передай через промежуточный файл 1.py > out && 2.py
а как в 2.py получить то? через какую переменную? stdin?
или предлагаешь прочитать его в 2.py?
cybergrind
предлагаю просто прочитать… можно конечно через popen… это будет наиболее похоже на то что ты хочешь
#2.py
stdin, stdout = os.popen4('1.py')
for s in stdout.read():
print '!',s


#1.py
print 'hello'
только у меня посимвольно читаеться из stdout - но тут я думаю ты разберешся быстро

+ запускать необязательно другой скрипт, можно и прогу =)
balu
j2a
а windows умеет pipes?
да
qman
balu
j2a
а windows умеет pipes?
да
посмотрите пожалуйста
http://linux.byexamples.com/archives/343/python-handle-string-from-pipelines-and-list-of-param/#comment-49923
приведены примеры
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
понимаю что на сайте приведены примеры для линукс, должны ли они работать для windows
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