#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()))