在GUI上显示一个巨大的文件

时间:2015-08-07 21:14:15

标签: python django large-files

我是编程世界的新手。我已经开始学习Python了。我正在尝试开发一个获取用户输入的程序,在后台运行一些命令,然后在Web界面上显示输出。虽然它稍微复杂一些,但为简单起见,您可以将其视为:

  1. 用户输入文件名
  2. python代码运行“cat filename”
  3. 输出显示在屏幕上。
  4. 我有Python + Django + Apache设置。我正在使用HTML来显示输出。只要返回的输出相当小,它就能正常工作。但有时我有巨大的输出(约700 MB),显然我很难在网络界面上显示它。

    Code Snippet:
    op = subprocess.check_output(cmd,universal_newlines=True)
    return render (request, 'display.html', {'op': op})
    

    在网络上展示如此大型内容的最佳方法是什么?我想提出的一些观点:

    • 将输出存储在文件而不是字符串中。以块的形式读取文件。在这种情况下,我可以将代码写入文件并同时读取文件以进行显示吗?我不认为这是一个好主意但想要检查。
    • 是否有任何python包旨在解决此类问题?任何django功能?
    • 当我有大量输出时,程序需要一段时间才能获得输出,然后需要一段时间才能显示在屏幕上。

2 个答案:

答案 0 :(得分:0)

您无法在任何常规屏幕上一次显示700 MB的字母数字数据,即使可以,用户也会淹没在其中。因此,您应该显示部分并启用滚动或选择。如您所示,加载所有这些数据需要相当长的时间。但是,由于您不会将其整体视图,因此您也无需将其加载到一个部件中。您应该使用Ajax(例如在jQuery中实现)而不是刷新整个页面,以使浏览器将数据加载到适当的HTML / DOM元素中,如用户所指示的那样。移动滚动条。鉴于即使在这种情况下700 MB也是太多,更好的方法是使用某种类型的分层(树)控制或另一种非顺序选择机制来选择用于显示的数据。在这种情况下,除了提供页面本身之外,Django的唯一任务是提供所请求的数据部分,例如,作为JSON数据。如上所述,同时保存显示数据部分和选择控件的页面只提供一次。

答案 1 :(得分:0)

看看一些jQuery Infinite Scrolling选项here