python - 类中的 Python Glob 以访问文件中的元素
问题描述
您好,我在使用 glob 访问多个子目录中的文件列表时遇到问题。
这是我的代码:
class Folder:
"""Attempt to model typical folder."""
def __init__(self, path):
self.path = path
def get_folder(self):
files = glob.glob(os.path.join(self.path, "*"))
dir_list = []
for f in files:
if os.path.isdir(f):
dir_list = dir_list + [
os.path.join(self.path, elt) for elt in os.listdir(f)
]
return dir_list
def get_file(self):
dir_list = self.get_folder()
sf_list = []
for line in dir_list:
sep = os.path.sep
subfiles = glob.glob(sep.join([line, "*"]))
sf_list.append(subfiles)
return sf_list
将其作为代码结构:
datasets
Actor1,
emotion1
one.wav
two.wav
emotion2
one.wav
two.wav
Actor2
emotion1
one.wav
two.wav
emotion2
one.wav
two.wav
我的输出Folder(datasets).get_folder()
如下。
['...\\datasets\\Actor1\\emotion1',
'...\\datasets\\Actor1\\emotion2',
'...\\datasets\\Actor2\\emotion2',
'...\\datasets\\Actor2\\emotion2',]
但是当我尝试访问子文件夹中的文件并将其保存到变量中时,调用
Folder(datasets).get_file()
而不是返回所有子文件,
['...\\datasets\\Actor1\\emotion1\\one.wav',
'...\\datasets\\Actor1\\emotion1'\\two.wav',
'...\\datasets\\Actor2\\emotion2\\one.wav',
'...\\datasets\\Actor2\\emotion2\\two.wav',]
它输出多个空值的列表:
Out[3]: [ [], [], [], []]
你能帮忙吗?
解决方案
我尚未对此进行测试,但这对您来说可能是一个好的开始。
import pathlib
class Folder(pathlib.Path):
def files(self):
return [f for f in self.iterdir() if f.is_file()]
def folders(self):
return [f for f in self.iterdir() if f.is_dir()]
请参阅https://docs.python.org/3/library/pathlib.html#pathlib.Path.iterdir。
推荐阅读
- go - Go Lang 中的重复导入
- cmake - 强制 cmake 创建 32 位库而不是 64 位库
- vba - 使用 Excel VBA 将 .msg 文件中的表格数据粘贴到 Excel 工作表中的单独单元格中
- python - 如何为不同版本的 python 创建一个虚拟环境?
- ios - AudioKit iOS:输入节点如何动态连接到活动链中的混音器?
- python - 如何告诉 setuptools 从 src/mypackage 获取我的包
- bash - 在 bash 中整理 `\[ ... \]`
- java - 扩展阶段故障排除
- sql - 按星期几过滤
- credentials - AVG 如何知道特定密码已泄露?