2015-03-23 32 views
7

Tôi có thể lấy tên thư mục hiện có trong thư mục bằng cách sử dụng Python bằng cách nào?Tên thư mục Python trong thư mục

Tôi muốn lưu tất cả các thư mục con vào danh sách để làm việc với các tên sau đó nhưng tôi không biết cách đọc các tên thư mục con?

Cảm ơn bạn giúp

Trả lời

10

Bạn có thể sử dụng os.walk()

# !/usr/bin/python 

import os 

directory_list = list() 
for root, dirs, files in os.walk("/path/to/your/dir", topdown=False): 
    for name in dirs: 
     directory_list.append(os.path.join(root, name)) 

print directory_list 

EDIT

Nếu bạn chỉ muốn mức độ đầu tiên và không thực sự "diễu hành" qua các thư mục con, nó thậm chí còn ít mã:

import os 

root, dirs, files = os.walk("/path/to/your/dir").next() 
print dirs 

Đây không phải là thực sự những gì os.walk được thực hiện cho. Nếu bạn thực sự chỉ muốn một mức độ thư mục con, bạn cũng có thể sử dụng os.listdir() như Yannik Ammann gợi ý:

root='/path/to/my/dir' 
dirlist = [ item for item in os.listdir(root) if os.path.isdir(os.path.join(root, item)) ] 
print dirlist 
+0

cảm ơn. Nhưng mã này chỉ là danh sách các tên, tuy nhiên tôi không thể lưu chúng vào một mảng hoặc danh sách? – HightronicDesign

+0

Chắc chắn bạn có thể ... Tôi đã chỉnh sửa câu trả lời của tôi, vì vậy nó gắn thêm các mục vào danh sách. –

+0

ahh tính năng thực sự mát mẻ, vẫn còn một vấn đề, tôi nhận được tất cả các thời gian cây hoàn chỉnh của tất cả các thư mục con trong đường dẫn, tôi chỉ cần cấu trúc đầu tiên: C: \ MyPath và trong thư mục này tôi có folder1, folder2, folder3 .... và tôi chỉ cần tên thư mục 1, folder2 etc chứ không phải thư mục con của thư mục1 ..... – HightronicDesign

2

Bạn có thể sử dụng os.listdir()here a link to the docs

Cảnh báo trả về tập tin và thư mục

dụ:

import os 

path = 'pyth/to/dir/' 
dir_list = os.listdir(path) 

Cập nhật: bạn cần phải kiểm tra xem tên trở lại là thư mục hay tập tin

import os 

path = 'pyth/to/dir/' 
# list of all content in a directory, filtered so only directories are returned 
dir_list = [directory for directory in os.listdir(path) if os.path.isdir(path+directory)] 
+0

'os.listdir()' cũng liệt kê các tệp, không chỉ các thư mục. –

+0

không? tại sao nó sẽ được gọi là listdir nếu nó mang lại cho các tập tin ?? – yamm

+0

Bởi vì nó liệt kê các nội dung của một thư mục :) –

1

Sử dụng os.walk(path)

import os 

path = 'C:\\' 

for root, directories, files in os.walk(path): 
    for directory in directories: 
     print os.path.join(root, directory) 
+0

xin như thế nào tôi có thể in chỉ có 2 mức độ xuống (tiểu thư mục) của thư mục ... – Ossama

+0

import os path = 'C: \\' cho rễ, thư mục, tệp trong os.walk (đường dẫn): nếu root.replace (đường dẫn, '') .count (os.sep) <= 2: gốc in – srekcahrai

3

Bắt đầu với Python 3.4, bạn cũng có thể sử dụng pathlib mô-đun mới:

from pathlib import Path 

p = Path('some/folder') 
subdirectories = [x for x in p.iterdir() if x.is_dir()] 

print(subdirectories) 
3

Bạn nên nhập os trước.

import os 
files=[] 
files = [f for f in sorted(os.listdir(FileDirectoryPath))] 

Điều này sẽ cung cấp cho bạn danh sách tất cả các file trong FileDirectoryPath sắp xếp.

Các vấn đề liên quan