2017-04-30 13 views
0

私のコードは 'Monitors'フォルダの下のディレクトリとサブディレクトリをスキャンしますが、何とかサブディレクトリ名を表示できませんでした。pythonを使ってサブディレクトリ名を印刷するには

モニタは親ディレクトリで、Dellはサブディレクトリであり、ioはDellのファイルです。

-Monitors 
-------- Cab.txt 
--- Dell 
-------- io.txt 
-------- io2.txt 

私の親ディレクトリとコード

parent_dir = 'E:\Logs\Monitors' 

def files(parent_dir): 
    for file in os.listdir(parent_dir): 
     if os.path.isfile(os.path.join(parent_dir, file)): 
     yield file 

def created(file_path): 
    if os.path.isfile(file_path): 
     file_created = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(os.path.getctime(file_path))) 
     return file_created 


len = (item for item in files(parent_dir)) 
str = "" 
for item in len: 
    str +="File Name: " + os.path.join('E:\\Logs\\Monitors\\', item) + "\n" \ 
    + "File Created on: " + created(os.path.join('E:\\Logs\\Monitors\\', item)) + "\n" \ 
print str; 

出力

E:Logs\Monitors\Cab.txt 
E:Logs\Monitors\io.txt 
E:Logs\Monitors\io2.txt 

マイ所望の出力

E:Logs\Monitors\Cab.txt 
E:Logs\Monitors\Dell\io.txt 
E:Logs\Monitors\Dell\io2.txt 

私はpath.joinで変数を使用してみましたが、エラーで終了しました。

+0

'io.txt'と' 'Eに住んでio2.txt'ない限り、あなたは実際に、その出力を得ることができません:\ログ\ Monitors'直接。あなたは 'Dell'からファイルを生成しません。 –

+0

@MartijnPieters次に、ディレクトリ内のすべてのファイルとそのサブディレクトリをパス名でリストする方法はありますか? – Prime

答えて

1

よりもむしろos.listdir()を使用し、ツリー内のすべてのディレクトリをトラバースするos.walk()を使用します。

for dirpath, dirnames, filenames in os.walk(parent_dir): 
    for filename in filenames: 
     full_path = os.path.join(dirpath, filename) 
     print 'File Name: {}\nFile Created on: {}\n'.format(
      full_path, created(full_path)) 

os.walk()以上の各反復はあなたに1つのディレクトリについての情報を提供します。 dirpathはそのディレクトリへのフルパスであり、dirnamesfilenamesはその場所のディレクトリとファイル名のリストです。それぞれを処理するためにファイル名の上にループを使用するだけです。

-1
if os.path.isfile(os.path.join(parent_dir, file)): 
str +="File Name: " + os.path.join('E:\\Logs\\Monitors\\', item) + "\n" \ 

この行は、サブディレクトリ名をバイパスしているようです。あなたは本質的に以下のことをしています。

If file is file: 
    print('E:\Logs\Monitors\' + filename) 

これは実際にサブディレクトリに参加していないため、問題の原因になる可能性があります。

これらは参考になる場合があります。

How to get all of the immediate subdirectories in Python

+1

サブディレクトリにファイルをリストすることさえありません。 –

関連する問題