在Python中创建一个服务,该服务在循环中读取STDIN并写入STDOUT,可以通过以下方式实现:
import sys
def main():
while True:
# 从STDIN读取数据
input_data = sys.stdin.readline()
# 如果输入数据为空,表示可能已经到达文件末尾或者对方关闭了连接,此时退出循环
if not input_data:
break
# 处理输入数据(这里可以添加你的逻辑)
output_data = input_data.strip().upper() # 示例:将输入数据转换为大写
# 将处理后的数据写入STDOUT
sys.stdout.write(output_data + '\n')
sys.stdout.flush() # 确保数据立即被写入,而不是缓存在内存中
if __name__ == "__main__":
main()
sys
模块提供了对解释器使用或维护的一些变量以及与解释器进行强交互的函数的访问。main()
函数是程序的入口点。while True:
创建一个无限循环,以便持续读取输入。sys.stdin.readline()
用于从标准输入读取一行数据。input_data
为空,表示可能已经到达文件末尾或者对方关闭了连接,此时退出循环。sys.stdout.write(output_data + '\n')
将处理后的数据写入标准输出,并添加换行符以便于阅读。sys.stdout.flush()
确保数据立即被写入,而不是缓存在内存中。你可以将上述代码保存为一个Python文件(例如stdio_service.py
),然后在命令行中运行它:
python stdio_service.py
此时,程序会等待从STDIN读取数据,并将处理后的结果写入STDOUT。你可以通过重定向输入和输出来测试这个服务,例如:
echo "hello" | python stdio_service.py
这将输出:
HELLO
或者你可以将程序的输出重定向到一个文件:
python stdio_service.py > output.txt
然后通过其他方式(如另一个脚本或命令)向程序的标准输入发送数据。
领取专属 10元无门槛券
手把手带您无忧上云