Я пишу скрипт на Python, целью которого является обход структуры каталогов, где каждый каталог имеет один текстовый файл и
- Выберите файл в каталоге с произвольными 'n' каталогами ниже от root
- Объединить весь текст из файлов из целевого каталога в корневой каталог в одном файле
- Используйте
say -f script.txt -o greetings.aiff
, чтобы преобразовать текстовый файл и экспортировать его в формат aiff
- Используйте
lame -m m greetings.aiff greetings.mp3
, чтобы преобразовать его в более удобный формат
Почему это? Как бы странно это ни звучало, создавать пользовательское обучающее аудио, которое пересекает структуру знаний (структуру каталогов) и охватывает различные ее части каждый день.
Я думаю, что все будет в порядке на шагах 3 и 4. Однако мне сложно определить случайные файлы в каталогах n
ниже root.
Основываясь на ответах в других местах, я вижу, что я могу использовать либо pathlib
из Path
, либо os.walk
Здесь есть две реализации:
pathlib
Получает список файлов и представляет случайный. Я думаю, на данный момент этого будет достаточно. Тем не менее, как я могу получить все файлы между root и случайным файлом?
def get_random_files2(ext, top=os.getcwd()):
file_list = list(Path(top).glob("**/*.{}".format(str(ext))))
if not len(file_list):
return "No files matched that extension: {}".format(str(ext))
rand = random.randint(0, len(file_list) - 1)
#print(len(file_list))
return file_list[rand]
extension = "txt"
print(get_random_files2(extension))
os.walk
Это наполовину испечено, так как я все еще учусь его использовать, а мой питон ржавый.
import os
for root, dirs, files in os.walk(".", topdown=True):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))