嵌套 glob 目录列表未正确返回
Posted
技术标签:
【中文标题】嵌套 glob 目录列表未正确返回【英文标题】:Nested glob directory listings not returning properly 【发布时间】:2012-04-02 22:38:27 【问题描述】:我正在尝试修复通过目录树结构传播的(3500 多个)音乐文件中相当数量的 Id3 专辑/艺术家标签,如下所示:
"Winamp Library/Artist Name/Album Name/Song.(mp3/flac/whatever)"
此代码仅打印基本“Winamp 库”目录中的艺术家姓名列表,我做错了什么?
for artist in glob.glob('Winamp Library/*'):
print(artist)
for album in glob.glob('Winamp Library/' + artist+ '/*'):
print (album)
输出:
Winamp Library\Artist 1
Winamp Library\Artist 2
什么时候输出应该是:
Winamp Library\Artist 1
Winamp Library\Artist 1\Album1
Winamp Library\Artist 1\Album2
Winamp Library\Artist 2
etc
【问题讨论】:
使用os.walk()
,您可能会发现这项任务更容易。
【参考方案1】:
当您获得 glob 结果时,它也将包含您提供的模式部分,因此您实际上是在尝试在第二个 glob 中进行匹配:
'Winamp Library/Winamp Library/<ARTIST>/*'
我怀疑你想要的更像是:
for artist in glob.glob('Winamp Library/*'):
print(artist)
for album in glob.glob(artist + '/*'):
print (album)
请注意,glob 也可以同时执行多个级别,因此您可以在 'Winamp Library/*/*'
上进行 glob。
【讨论】:
当然!这完美无缺。但是现在将艺术家/专辑存储在变量中以便我可以将其写入 Id3 标签的最简单方法是什么? @SamCoulter 想到的最简单的方法是用 .split() on '/' 分割字符串以上是关于嵌套 glob 目录列表未正确返回的主要内容,如果未能解决你的问题,请参考以下文章