2016-03-29 15 views
0

Geçerli çalışma dizinimin alt klasörlerini almam gerekir.Python'da yalnızca cwd'nin alt klasörlerini nasıl alabilirim

os modülüyle denedim ve tree -command'ı buldum. Alt klasörleri alt alt klasörlere veya alt klasörlerde olmayanlara almam gerek.

import os 

cwd = os.getcwd() 
dirctorys = os.tree(cwd) 

ağacımı yazdırmak için for döngü yarattı, ancak bu onun içeriği dahil tüm alt klasörleri, yazdırır: Burada

Şu anda ne var olmasıdır. Ama sadece alt klasörlere ihtiyacım var, başka bir şey yok! Örneğin

bunlar benim Directorys şunlardır:

root/me/cwd 
     |-__init__.py 
     |-mygeo.py 
     |-subfolder1 
     | |-file1.py 
     | |-file2.py 
     |-subfolder2 
     | |-file3.py 
     | |-subsubfolder 
     | | |-foo.py 
     | | |-foo2.py 

Ben piton içinde bu haiz bir demet veya bir liste dönmek istiyorum: Ben os.tree(cwd) çıktısını analiz ettik

['__init__.py', 'mygeo.py', 'subfolder1', 'subfolder2'] 

zaman yazdırdı ve listelerinden oluştuğunu öğrendim. İlk liste tam olarak ihtiyacım olan şey gibi görünüyor, ama nasıl elde edeceğimi bilmiyorum.

Böyle bir listeyi nasıl alabilirim?

+4

mu 'os' modülü' ağaç() 'özniteliği vardır? – Ren

+0

Yapıyor ve bana –

+1

@h_e_u_r_e_k_a'daki herhangi bir şeyde her şeyi veriyor: Yapmıyor. Bir ['os.walk'] (https://docs.python.org/3/library/os.html#os.walk) var, ancak gösterdiğiniz çıktı daha fazla NIX [' NIX tree' yardımcı programı] (http://linux.die.net/man/1/tree) baskılar. – ShadowRanger

cevap

2

Sen os.listdir() kullanabilirsiniz:

import os 

cwd = os.getcwd() 
contents = os.listdir(cwd) 

dizinler dosyaları bölmek isterseniz:

import os 

cwd = os.getcwd() 
_, files, directories = next(os.walk(cwd)) 
+0

soru yazarken m kodu görmedim Bu gibi görünüyor, teşekkür ederim! –

+0

Bu, Python 3 olduğundan, aslında 3.5 ya da daha yüksekse, ['os.scandir'] 'in (https://docs.python.org/3/library/os.html#os.scandir) olacağını belirtmeliyim Belirli bir yoldaki dizinleri daha hızlı ve kolay bir şekilde almanızı kolaylaştırır: 'dizinler = [entry.is_dir()]' durumunda os.scandir() için giriş. – ShadowRanger

+0

Bu çok daha karmaşık! –

İlgili konular