繁体   English   中英

是否可以使用os.listdir()打印列化输出?

[英]Is it possible to print columnized output with os.listdir()?

我想用os.listdir创建两列。 代码是标准的listdir()。

for f in os.listdir(os.curdir):
                print f

输出如下所示:

file1
file2
file3
file4

但我正在努力实现:

file1    file3
file2    file4

使用os.listdir()可以轻松实现吗?

os.listdir仅返回一个列表,不能像ls -C2那样很好地打印它(请注意,如果您的系统中有ls ,则不需要python)

您可以这样对2个列进行此操作:

import os,itertools

dl=os.listdir(".")

for t in itertools.zip_longest(dl[::2],dl[1::2],fillvalue=""):
    print("{:<20} {:<20}".format(*t))

这样就可以将值交织在一起(使用zip_longest以避免忘记一个奇数),并为每个值使用20个空格进行格式化。

任何数量的列的一般情况可能是:

import os,itertools

dl=os.listdir(".")

ncols = 3

for t in itertools.zip_longest(*(dl[i::ncols] for i in range(ncols)),fillvalue=""):
    print(("{:<20}"*ncols).format(*t))

(生成ncols移位列表,对其进行交织,并相应地生成格式)

不,使用os.listdir()是不可能的。 您可能需要考虑其他选项,例如如何更好地打印列表?

您可以使用此anwser中的 pairwise函数轻松完成此操作

def pairwise(iterable):
    a = iter(iterable)
    return izip(a, a)

for f1, f2 in pairwise(os.listdir(os.curdir)):
    print f1 + '\t' + f2

尝试这个,

for i,k in zip(os.listdir(os.curdir)[0::2], os.listdir(os.curdir)[1::2]): print i,k

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM