我正在使用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
答案 0 :(得分:1)
您可以将输出传递给less(使用subprocess
在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)
答案 1 :(得分:0)
如果您已经或可以安装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')
还有许多更精确的方法(例如使用iter
然后使用itertools
),但这种简单的方法适用于缺少shell命令(例如less
)的基本情况