2017-05-25 4 views
0

私はos.listdirで2つの列を作成しようとしています。コードは標準のlistdir()です。os.listdir()で列出力を印刷することはできますか?

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

出力は次のように次のようになります。

file1 
file2 
file3 
file4 

しかし、私が達成しようとしている:

file1 file3 
file2 file4 

)はos.listdir(と(簡単に)達成できるということですか?

答えて

2

os.listdirは、あなたがこのようにそれを行うことができます(あなたのシステムにlsを持っている場合は、そのためのpythonを必要としないことに注意)

をちょうど、リストを返しますls -C2のようにうまくそれを印刷しないだろう2つのcolums:

import os,itertools 

dl=os.listdir(".") 

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

一緒に値をインタリーブなる各値に対して20個のスペースを使用してフォーマット(zip_longestでは、奇数いずれかを忘れ避けるため)。

任意の数の列のための一般的なケースが考えられます。

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がそれらをインターリーブ、リストをシフトし、それに応じてフォーマットを生成する)

0

いいえ、os.listdir()では不可能です。 How to print a list more nicely?のような他のオプションを考慮する必要があるかもしれません。

0

あなたは簡単に機能pairwiseを使用してそれを行うことができますこのanwser

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

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

問題は、要素の数が奇数の場合、最後の要素が欠落することです。 –

0

、これを試してみてください
for i,k in zip(os.listdir(os.curdir)[0::2], os.listdir(os.curdir)[1::2]): print i,k 
関連する問題