如何使用sys.stdout返回任何对象

时间:2019-03-29 10:23:35

标签: python bash list pipe

我正在处理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 个答案:

答案 0 :(得分:2)

您可以通过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()))