gpt4 book ai didi

python - 在 windows 7 下的 python 中使用文本文件作为标准输入

转载 作者:可可西里 更新时间:2023-11-01 10:26:58 25 4
gpt4 key购买 nike

我是 win7 用户。

我无意中读到了 *nix 系统中的重定向(如 command1 < infile > outfile),然后我发现 something similar can be done in Windows (link) . python 也可以用管道(?)或标准输入/标准输出(?)做这样的事情。

我不明白这在 Windows 中是如何发生的,所以我有一个问题。

我使用某种专有的 Windows 程序 (.exe)。该程序能够将数据附加到文件中。为简单起见,我们假设它等同于

while True:
f = open('textfile.txt','a')
f.write(repr(ctime()) + '\n')
f.close()
sleep(100)

问题:我可以将此文件 (textfile.txt) 用作标准输入吗?我的意思是脚本(在运行时)应该始终(不是一次)处理所有新数据,即

在“永无止境的循环”中:

  • 程序(.exe)写了一些东西。

  • Python 脚本捕获数据和过程。

能否请您写下如何在 python 中执行此操作,或者在 win cmd/.bat 或其他方式中执行此操作。

这真是太酷了。我想学习怎么做! :D

最佳答案

如果我没看错您的问题,那么您希望将一个命令的输出通过管道传输到另一个命令。

这通常是这样完成的:

cmd1 | cmd2

但是,您说您的程序只写入文件。我会仔细检查文档,看看它们是否不是让命令写入标准输出而不是文件的方法。

如果这不可能,那么您可以创建所谓的命名管道。它在您的文件系统上显示为一个文件,但实际上只是一个可以写入和读取的数据缓冲区(数据是一个流,只能读取一次)。这意味着您的程序读取它不会完成,直到写入管道的程序停止写入并关闭"file"。我没有在 Windows 上使用命名管道的经验,因此您需要为此提出一个新问题。管道的一个缺点是它们的缓冲区大小有限。因此,如果没有程序从管道读取数据,那么一旦缓冲区已满,写入程序将无法继续,只能无限期地等待,直到程序开始从管道读取数据。

另一种方法是,在 Unix 上有一个名为 tail 的程序,它可以设置为持续监视文件的更改并输出附加到文件的任何数据(有一个短暂的延迟.

tail --follow=textfile.txt --retry | mycmd 
# wait for data to be appended to the file and output new data to mycmd

cmd1 >> textfile.txt # append output to file

关于此需要注意的一件事是 tail 不会仅仅因为第一个命令已停止写入文件而停止。 tail 将永远继续监听该文件的更改,或者直到 mycmd 停止监听 tail,或者直到 tail 被终止(或“sigint-编”)。

question关于如何将 tail 版本安装到 Windows 机器上有各种答案。

关于python - 在 windows 7 下的 python 中使用文本文件作为标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581632/

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