处理大输出-Python

处理大输出-Python,python,amazon-s3,boto,Python,Amazon S3,Boto,我正在使用pythonboto库访问S3存储桶中的文件。我已经整理好了所有的输出,效果很好。但是我不想同时显示终端上的所有文件。比如说,如果一个人的存储桶中有800个文件和300个文件夹,那么一次显示所有这些文件将是一个混乱,因为滚动浏览所有文件是不可行的。显示如此大的输出量的最佳方式是什么?我想把它们分成几页,但在思考过程中有点自以为是。如有任何帮助/想法,将不胜感激 我如何迭代列表 for each in file_list: print ("{0} ,{1},{2},{3}".fo

我正在使用python
boto
库访问
S3
存储桶中的文件。我已经整理好了所有的输出,效果很好。但是我不想同时显示终端上的所有文件。比如说,如果一个人的存储桶中有800个文件和300个文件夹,那么一次显示所有这些文件将是一个混乱,因为滚动浏览所有文件是不可行的。显示如此大的输出量的最佳方式是什么?我想把它们分成几页,但在思考过程中有点自以为是。如有任何帮助/想法,将不胜感激

我如何迭代列表

for each in file_list:
    print ("{0} ,{1},{2},{3}".format(each.name,each.size,each.version)
编辑:

我将这些文件附加到一个列表中,并使用
for
循环将它们打印出来,以迭代它们,然后使用
.format
打印它们。示例如下所示:

Files
file1
file2
file3
file4
file5
file6
file7
file8
file9
file10
file11
file12
file13
file14
file15
file16

Folders:

folder1
folder2
folder3
folder4
folder5
folder6
folder7
folder8

您可以通过管道将输出传输到less(在python内部使用
子流程
),以在输出上获得
less
命令效果

示例代码:

import subprocess

long_array = []
for i in xrange(1000):
    line = 'Line text number {0}'.format(i)
    long_array.append(line)
output_string = '\n'.join(long_array)  # can be anything you want as long as it is a string

proc = subprocess.Popen('less', stdin=subprocess.PIPE)
proc.communicate(output_string)

如果您拥有或能够安装
less
命令(或较旧但也可行的
more
)@Boaz使用该命令的想法无疑是最好的——因此您可能可以在任何类似Unix的系统上使用它

但是,如果您需要或希望自己做得更初步:

def showlonglist(longlist, atatime=20):
    i = 0
    while i < len(longlist):
        for j in range(i, min(len(longlist)-1, i+atatime)):
            print(longlist[j])
        i += atatime
        print('Press Return to continue')
def showlonglist(longlist,atatime=20):
i=0
而我

还有许多更精细的方法(例如使用
iter
,然后使用
itertools
),但这种简单的方法适用于缺少shell命令(例如
less

)的基本情况,因此将它们显示为页面有什么问题?不确定如何执行。我曾想过把所有的唱片都列在一张单子上。但是从那里开始,如何显示每页10个(只是一个例子)文件,我使用的是
Mac
,所以我已经安装了较少的命令。然后你应该接受@Boaz的答案(或者至少让他使用
less
,实际提供一个
showlonglist
函数的完整工作示例,这非常简单,并且需要完整的答案:-)。好主意,如果您添加一个完整的工作示例(例如作为
showlonglist
函数)我希望OP能接受当时的完整答案。@Boaz我从未使用过
子流程
。你能给我一个输出示例吗?