2016-12-24 3 views
3

私はすべてのディレクトリ(/ home/dirの下の1つ)とその内容を一覧表示しようとしています。このコードは動作していますが、辞書をpandasデータフレームに変換すると、ディレクトリ名がファイル名と一致しません。ディレクトリパスをウォークスルー

mypath='/home/' 
from os import walk 

myd=dict() 
for (dirpath, dirnames, filenames) in walk(mypath): 
    for i in dirnames: 
     for (dirpath1, dirnames1, filenames1) in walk(i): 
      myd[i]=','.join(filenames1) 


import pandas as pd 
df=pd.DataFrame(myd , index=[0]).T 
df.columns=['files'] 

pd.set_option('max_colwidth', 800) 
df 

2列のデータフレームをディレクトリとファイルの内容で構築する方が良いですか?

答えて

2

最終結果がどのように表示されるかはっきりしていませんが、os.walkは完全な再帰を行います。第二のループにdirnamesを反復する必要はありません。

import os 

mypath = '/home/' 

myd = {} 
for (here, dirs, files) in os.walk(mypath): 
    for file in files: 
     myd[here] = '.'.join(files) 

print(myd) 

これは、Python 3のコードです。

myd = {} 
for name in os.listdir(mypath): 
    subdir = os.path.join(mypath, name) 
    if not os.path.isdir(subdir): 
     continue 
    myd[name] = '.'.join(os.listdir(subdir)) 

print(myd) 
:あなたが唯一の walkする必要はありません入力ディレクトリ下の1つのレベルを必要とする場合、それのpython 2 fileはキーワードであり、変数名として使用すべきではない...

UPDATE

関連する問題