Как вернуть любой объект с помощью sys.stdout - PullRequest
0 голосов
/ 29 марта 2019

Я работаю над сценарием Python Bash, и я хотел бы вывести список из первого файла в следующий как:

sender.py

#!/usr/bin/env python
import sys
l = [1,2,4,6,8,"maybe some text"]
sys.stdout.write(Qs)
sys.stdout.flush()

receiver.py

#!/usr/bin/env python
import sys
print(sys.stdin.readline())

тогда делай в bash

./sender_py | ./receiver

Я знаю, что проблема в том, что этот метод может читать только в строке, но есть ли другой способ передать любой объект. В этом случае я передаю список, но позже я хотел бы попробовать другие объекты, такие как pandas dfs.

1 Ответ

2 голосов
/ 29 марта 2019

Сериализацию данных можно использовать с pickle :

sender.py

#!/usr/bin/env python
import sys
import pickle
l = [1,2,4,6,8,"maybe some text"]
sys.stdout.buffer.write(pickle.dumps(l))

receive.py

#!/usr/bin/env python
import sys
import pickle
print(pickle.loads(sys.stdin.buffer.read()))
...