如何使用Python获取目录中存在的文件夹名称?
我想将所有子文件夹保存到列表中以便在此之后使用名称,但我不知道如何阅读子文件夹名称?
谢谢你的帮助
答案 0 :(得分:20)
您可以使用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
修改强>
如果你只想要第一级而不是实际上#34;步行"通过子目录,代码更少:
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
答案 1 :(得分:5)
你应该先导入os。
import os
files=[]
files = [f for f in sorted(os.listdir(FileDirectoryPath))]
这将为您提供列表,其中FileDirectoryPath中的所有文件已排序。
答案 2 :(得分:4)
从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)
答案 3 :(得分:3)
您可以使用os.listdir()
here a link to the docs
警告返回文件和目录
示例:
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)]
答案 4 :(得分:2)
使用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)
答案 5 :(得分:2)
我使用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)
答案 6 :(得分:0)
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]
答案 7 :(得分:0)
对于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)