1

我正在向 iTunes 传送视频项目。当我运行命令时,我得到类似于以下内容的输出:

$ command
[2013-01-09 11:02:14 PST] <main> DBG-X:   1% 
[2013-01-09 11:02:15 PST] <main> DBG-X:   2% 
[2013-01-09 11:02:16 PST] <main> DBG-X:   3%
...etc...

我将如何更新我的应用程序中的数据库字段以显示此交付的进度?我想我会使用类似 stdout=subprocess.PIPE, stderr=subprocess.PIPE.

但是我怎么能实时得到这个来更新数据库呢?

4

1 回答 1

2

我会这样做(可能还有其他更好的方法):

  1. 每秒钟检查一次文件n并记住该文件中的最后一行。
  2. 如果最后一行发生了变化,则意味着自上次检查以来已经取得了一些进展。
  3. 一旦您检测到这样的进度,您应该能够触发写入数据库的函数。

请注意,这几乎是实时的,因为您仅每秒钟检查一次n文件

代码

progress = 0
lastLine = ''
n = 5 # seconds
while progress < 100:
    with open('path/to/logfile') as logfile:
        for newLine in logfile:
            pass
        if newLine.strip() != lastLine:
            lastLine = newLine.strip()
            writeToDatabase(lastLine)
    time.sleep(n)

希望这可以帮助

于 2013-01-14T01:14:11.927 回答