处理大输出 - Python
Handle large output - Python
我正在使用 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 中使用 subprocess
)以获得对输出的 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')
还有很多更精致的方法(例如先使用 iter
,然后使用 itertools
),但这种简单的方法适用于缺少 shell 命令的基本情况,例如作为 less
.
我正在使用 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 中使用 subprocess
)以获得对输出的 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')
还有很多更精致的方法(例如先使用 iter
,然后使用 itertools
),但这种简单的方法适用于缺少 shell 命令的基本情况,例如作为 less
.