gpt4 book ai didi

python - 将输入管道输入到脚本,然后从用户那里获取输入

转载 作者:太空狗 更新时间:2023-10-29 17:15:53 25 4
gpt4 key购买 nike

假设我想将输入通过管道传递给 Python 程序,然后在命令行上从用户那里获取输入。

echo http://example.com/image.jpg | python solve_captcha.py

solve_captcha.py的内容是:

import sys 
image_url = sys.stdin.readline()

# Download and open the captcha...

captcha = raw_input("Solve this captcha:")
# do some processing...

上面会触发一个EOFError: EOF when reading a line错误。

我还尝试添加一个 sys.stdin.close() 行,它提示一个 ValueError: I/O operation on closed file

您能否将信息通过管道传输到 stdin,然后再从用户那里获取输入?

注意:这是一个精简的简化示例 - 请不要回答说“你为什么要在第一种情况下这样做”,这真的很令人沮丧。我只想知道您是否可以将信息通过管道传输到 stdin,然后提示用户输入。

最佳答案

这个问题没有通用的解决方案。最好的资源似乎是 this mailing list thread .

基本上,通过管道连接到程序会将程序的 stdin 连接到该管道,而不是连接到终端。

邮件列表线程有几个相对 simple solutions对于 *nix:

打开/dev/tty 替换 sys.stdin:

sys.stdin = open('/dev/tty')
a = raw_input('Prompt: ')

在运行脚本时将标准输入重定向到另一个文件句柄,并从中读取:

sys.stdin = os.fdopen(3)
a = raw_input('Prompt: ')
$ (echo -n test | ./x.py) 3<&0

以及 suggestion to use curses .请注意,邮件列表线程古老,因此您可能需要修改您选择的解决方案。

关于python - 将输入管道输入到脚本,然后从用户那里获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7141331/

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