Как вернуть любой объект с помощью sys.stdout

#python #bash #list #pipe

#python #bash #Список #канал

Вопрос:

Я работаю над скриптом 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. используйте стандартный Json в качестве текстового формата для связи. для отправки: json.dumps(your_object) для получения: d = json.loads(input_string)

Ответ №1:

Вы можете использовать сериализацию данных с помощью 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))
  

receiver.py

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