Python递归遍历所有子目录,并将文件名写入输出文件
我希望递归遍历根文件夹中的所有子文件夹,并将所有文件名写入输出文件。然后在每个子目录中,在子目录内创建一个新的输出文件,递归遍历其子目录,并将文件名附加到新的输出文件中Python递归遍历所有子目录,并将文件名写入输出文件,python,Python,我希望递归遍历根文件夹中的所有子文件夹,并将所有文件名写入输出文件。然后在每个子目录中,在子目录内创建一个新的输出文件,递归遍历其子目录,并将文件名附加到新的输出文件中 import os rootdir = '/Users/bayman/Music' ext = [".mp3", ".flac"] for root, dirs, files in os.walk(rootdir): path = root.split(os.sep) if any(file.endswith
import os
rootdir = '/Users/bayman/Music'
ext = [".mp3", ".flac"]
for root, dirs, files in os.walk(rootdir):
path = root.split(os.sep)
if any(file.endswith(tuple(ext)) for file in files):
m3ufile = str(os.path.basename(root))+'.m3u8'
list_file_path = os.path.join(root, m3ufile)
with open(list_file_path, 'w') as list_file:
list_file.write("#EXTM3U\n")
for file in sorted(files):
if file.endswith(tuple(ext)):
list_file.write(file + '\n')
因此,在下面的示例中,它应该在Music文件夹下创建一个Music.m3u8文件,并递归遍历所有子目录,并将每个子目录中的所有文件名添加到Music.m3u8文件中。然后在Rock文件夹中,创建一个Rock.m3u8文件,递归遍历Rock文件夹中的所有子文件夹,并在Rock.m3u8中的每个子文件夹中添加所有文件名。最后,在每个相册文件夹中,使用文件夹中的文件名创建Album1.m3u8、Album2.m3u8等。如何在python3.6中实现这一点
Music
....Rock
........Album1
........Album2
....Hip-Hop
........Album3
........Album4
这就是我所拥有的,但只是将每个文件夹的文件名添加到输出文件中,而不是递归地添加到根输出文件中
import os
rootdir = '/Users/bayman/Music'
ext = [".mp3", ".flac"]
for root, dirs, files in os.walk(rootdir):
path = root.split(os.sep)
if any(file.endswith(tuple(ext)) for file in files):
m3ufile = str(os.path.basename(root))+'.m3u8'
list_file_path = os.path.join(root, m3ufile)
with open(list_file_path, 'w') as list_file:
list_file.write("#EXTM3U\n")
for file in sorted(files):
if file.endswith(tuple(ext)):
list_file.write(file + '\n')
每次通过外部循环,您都将open(list\u file\u path,'w')作为list\u file:执行
。但您并没有创建或写入任何顶级文件,所以您当然不会得到一个。如果您想要一个,您必须显式地创建它。例如:
rootdir = '/Users/bayman/Music'
ext = [".mp3", ".flac"]
with open('root.m3u', 'w') as root_file:
root_file.write("#EXTM3U\n")
for root, dirs, files in os.walk(rootdir):
path = root.split(os.sep)
if any(file.endswith(tuple(ext)) for file in files):
m3ufile = str(os.path.basename(root))+'.m3u8'
list_file_path = os.path.join(root, m3ufile)
with open(list_file_path, 'w') as list_file:
list_file.write("#EXTM3U\n")
for file in sorted(files):
if file.endswith(tuple(ext)):
root_file.write(os.path.join(root, file) + '\n')
list_file.write(file + '\n')
(我只是猜测您在这个根文件中实际需要什么;您大概知道答案,不必猜测…)