首页 / PYTHON / 像列输出 – python库
像列输出 – python库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了像列输出 – python库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3121字,纯文字阅读大概需要5分钟。
内容图文
![像列输出 – python库](/upload/InfoBanner/zyjiaocheng/709/ba0db81454be4a6e89be8a82e2b0eca0.jpg)
Debian的apt工具输出结果是均匀宽度的列.例如,尝试运行“aptitude search svn”..并且所有名称都出现在相同宽度的第一列中.
现在,如果您调整终端的大小,则会相应地调整列宽.
是否有一个Python库可以让人们这样做?请注意,库必须知道终端宽度并将表作为输入 – 例如,可以是[(‘rapidsvn’,’用于颠覆的GUI客户端’),…] ..你可以还指定第一列(或任何列)的最大宽度.还要注意如果超过终端宽度,如何修剪下面第二列中的字符串.因此不会引入不需要的第二行.
$aptitude search svn
[...]
p python-svn-dbg - A(nother) Python interface to Subversion (d
v python2.5-svn -
v python2.6-svn -
p rapidsvn - A GUI client for subversion
p statsvn - SVN repository statistics
p svn-arch-mirror - one-way mirroring from Subversion to Arch r
p svn-autoreleasedeb - Automatically release/upload debian package
p svn-buildpackage - helper programs to maintain Debian packages
p svn-load - An enhanced import facility for Subversion
p svn-workbench - A Workbench for Subversion
p svnmailer - extensible Subversion commit notification t
p websvn - interface for subversion repositories writt
$
编辑:(响应亚历克斯的答案)…输出将类似于’aptitude search’,1)只有最后一列(这是唯一一列中一行最长的字符串)将被修剪, 2)通常只有2-4列,但最后一列(“描述”)预计至少占终端宽度的一半. 3)所有行包含相同数量的列,4)所有条目仅为字符串
解决方法:
我认为没有一种通用的跨平台方式来“获取终端的宽度” – 绝对不是“查看COLUMNS环境变量”(请参阅??我对该问题的评论).在Linux和Mac OS X上(我期待所有现代Unix版本),
curses.wrapper(lambda _: curses.tigetnum('cols'))
返回列数;但我不知道wcurses是否支持Windows.
一旦你有了(从os.environ [‘COLUMNS’],如果你坚持,或通过诅咒,或从oracle,或默认为80,或任何其他你喜欢的方式)所需的输出宽度,其余的是
很可行.这是一项艰苦的工作,很多机会出现一种错误,并且非常容易受到很多详细规范的影响,而这些规范并没有完全明确,例如:哪一列被剪切以避免包装 – 它始终是最后一个,还是……?为什么你根据你的问题在样本输出中显示3列只传递了两个…?如果并非所有行都具有相同的列数,应该会发生什么?表中的所有条目都必须是字符串吗?还有许多其他的神秘之处.
因此,对于您没有表达的所有规范采取一些随意的猜测,一种方法可能类似于……:
import sys
def colprint(totwidth, table):
numcols = max(len(row) for row in table)
# ensure all rows have >= numcols columns, maybe empty
padded = [row+numcols*('',) for row in table]
# compute col widths, including separating space (except for last one)
widths = [ 1 + max(len(x) for x in column) for column in zip(*padded)]
widths[-1] -= 1
# drop or truncate columns from the right in order to fit
while sum(widths) > totwidth:
mustlose = sum(widths) - totwidth
if widths[-1] <= mustlose:
del widths[-1]
else:
widths[-1] -= mustlose
break
# and finally, the output phase!
for row in padded:
for w, i in zip(widths, row):
sys.stdout.write('%*s' % (-w, i[:w]))
sys.stdout.write('\n')
内容总结
以上是互联网集市为您收集整理的像列输出 – python库全部内容,希望文章能够帮你解决像列输出 – python库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。