gpt4 book ai didi

python - 两个 Python 脚本之间如何传输数据

转载 作者:行者123 更新时间:2023-12-05 05:42:21 28 4
gpt4 key购买 nike

例如我有两个脚本,比如 script1.py

f = open("output1.txt", "w")
count = 1
for i in range(100):
f.write(str(count) + "\n")
print(str(count))
count +=1
f.close

此脚本将 1 到 100 的数字打印到文件和标准输出。

然后我有第二个脚本,比如 script2.py

import sys
import time
stdin = sys.stdin
f1 = open("output2.txt", "w")
for line in stdin:
if len(line)>0:
print(line.strip())
time.sleep(0.05)
f1.write(line.strip() + "\n")

从标准输入中读取数据并将它们打印到文件中。我添加了 time.sleep 命令以确保第二个脚本消耗数据的速率远低于第一个脚本生成的速率。

我从命令行运行脚本为

python3 script1.py | python3 script2.py

因此将第一个的标准输出(因此 print() 命令)重定向到第二个的标准输入。

它以某种方式工作,生成了两个包含 1 到 100 数字的文件。

我仍然想知道从第一个脚本到第二个脚本的数据传输部分是如何工作的。

  1. 第一个脚本以更快的速度生成数据。这些数据存储在哪里,等待第二个脚本访问它们?
  2. 在这两个进程之间是否设置了某种缓冲区?或者还有什么?
  3. 是 Python 还是操作系统对此负责?
  4. 缓冲区大小有限制吗?是否可以对其进行编程(例如访问以将数据也定向到另一个目标)?

非常感谢

最佳答案

这是因为管道“|”,更多信息在这里:https://ss64.com/nt/syntax-redirection.html

commandA  |  commandB     Pipe the output from commandA into commandB

因此您的脚本 1 中的打印件将发送到您的脚本 2。


我猜测它是如何工作的,每个打印都作为一个大字符串保存在内存中,然后(作为文本)发送回第二个,这就是 sys.stdin 工作的原因

关于python - 两个 Python 脚本之间如何传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72054400/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com