文件的异步读写
我有两个进程。
一个进程是在服务器上执行某个Unix命令,并把输出结果保存到一个文件里。每次输出的数据都会追加到这个文件中。例如:
find / > tmp.txt
另一个进程是打开并读取同一个文件,把内容存储到一个字符串中,然后把这个字符串发送给客户端。
这两个过程是同时进行的。我使用的是Python。
请问有什么可能的方式来实现这个场景?能不能给我一些示例代码来解释一下。
提前谢谢你。
Tazim。
1 个回答
1
如果你想把一个Unix命令的输出同时保存到文件里,还能在屏幕上显示出来,你可以用 [tee][1]
命令把它输出到标准输出(stdout),然后从那里读取,方法如下:
>>> command_line = '/bin/find / |tee tmp.txt'
>>> args = shlex.split(command_line)
>>> p = subprocess.Popen(args,stdout=subprocess.PIPE)
接下来,你可以使用 communicate() 方法,或者直接从 POpen 对象读取标准输出。想了解具体怎么用,可以查看 这里。