gpt4 book ai didi

python - 将文本通过管道传输到 Python 脚本或提示符

转载 作者:太空狗 更新时间:2023-10-29 18:21:31 25 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个非常简单的电子邮件脚本。它基本上是一个穷人的笨蛋。在工作中,我们会从周围的服务器发送大量数据,直接从服务器发送会简单很多。

我坚持的部分是处理消息。我希望用户能够执行以下操作:

$ cat message.txt | emailer.py fandingo@example.com
$ tail -n 2000 /var/log/messages | emailer.py fandingo@example.com

这两个都很简单。我可以 sys.stdin.read() 获取我的数据。

我遇到的问题是我还想支持使用以下用法提示输入消息:

emailer.py --attach-file /var/log/messages fandingo@example.com

Enter Your message. Use ^D when finished.
>> Steve,
>> See the attached system log. See all those NFS errors around 2300 UTC today.
>>
>> ^D

我遇到的问题是,如果我尝试 sys.stdin.read(),但没有数据,那么我的程序会阻塞,直到 stdin 获取数据,但我做不到打印我的提示。我可以采取一种安全的方法并使用 raw_input("Enter Your message. Use ^D when finished.") 而不是 stdin.read(),但我总是打印提示。

有没有办法在不使用会阻塞的方法的情况下查看用户是否将文本通过管道传输到 python 中?

最佳答案

您可以使用 sys.stdin.isatty 检查脚本是否以交互方式运行。示例:

if sys.stdin.isatty():
message = raw_input('Enter your message ')
else:
message = sys.stdin.read()

关于python - 将文本通过管道传输到 Python 脚本或提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024149/

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