[英]Python folder names in the directory
如何使用 Python 獲取目錄中存在的文件夾名稱?
我想將所有子文件夾保存到一個列表中以處理之后的名稱,但我不知道如何讀取子文件夾名稱?
謝謝你的幫助
您可以使用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
編輯
如果您只想要第一級而不是真正“遍歷”子目錄,則代碼更少:
import os
root, dirs, files = os.walk("/path/to/your/dir").next()
print dirs
這並不是os.walk
真正用途。 如果你真的只想要一級子目錄,你也可以像 Yannik Ammann 建議的那樣使用os.listdir()
:
root='/path/to/my/dir'
dirlist = [ item for item in os.listdir(root) if os.path.isdir(os.path.join(root, item)) ]
print dirlist
從 Python 3.4 開始,您還可以使用新的pathlib
模塊:
from pathlib import Path
p = Path('some/folder')
subdirectories = [x for x in p.iterdir() if x.is_dir()]
print(subdirectories)
您應該先導入 os。
import os
files=[]
files = [f for f in sorted(os.listdir(FileDirectoryPath))]
這將為您提供在 FileDirectoryPath 中排序的所有文件的列表。
警告返回文件和目錄
例子:
import os
path = 'pyth/to/dir/'
dir_list = os.listdir(path)
更新:您需要檢查返回的名稱是目錄還是文件
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)]
我使用os.listdir
獲取目錄的所有文件夾名稱
folder_names = []
for entry_name in os.listdir(MYDIR):
entry_path = os.path.join(MYDIR, entry_name)
if os.path.isdir(entry_path):
folder_names.append(entry_name)
獲取目錄的所有文件夾路徑
folder_paths = []
for entry_name in os.listdir(MYDIR):
entry_path = os.path.join(MYDIR, entry_name)
if os.path.isdir(entry_path):
folder_paths.append(entry_path)
獲取目錄的所有文件名
file_names = []
for file_name in os.listdir(MYDIR):
file_path = os.path.join(MYDIR, file_name)
if os.path.isfile(file_path):
file_names.append(file_name)
獲取目錄的所有文件路徑
file_paths = []
for file_name in os.listdir(MYDIR):
file_path = os.path.join(MYDIR, file_name)
if os.path.isfile(file_path):
file_paths.append(file_path)
使用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)
對於 python 3,我正在使用這個腳本
import os
root='./'
dirlist = [ item for item in os.listdir(root) if os.path.isdir(os.path.join(root, item)) ]
for dir in dirlist:
print(dir)
Python 3.x:如果您只想要給定目錄中的目錄,請嘗試:
import os
search_path = '.' # set your path here.
root, dirs, files = next(os.walk(search_path), ([],[],[]))
print(dirs)
上面的例子將打印出當前目錄中的目錄列表,如下所示:
['dir1', 'dir2', 'dir3']
輸出僅包含子目錄名稱。
如果目錄沒有子目錄,它會打印:
[]
os.walk()是一個生成器方法,所以使用next()只調用一次。 空字符串的三元組用於當目錄不包含任何子目錄時的錯誤情況,因為 os.walk() 生成器為目錄樹中的每一層返回三元組。 如果沒有這些,如果目錄為空,next() 將引發 StopIteration 異常。
對於更緊湊的版本:
dirs = next(os.walk(search_path), ([],[],[]))[1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.