Python: список всех имен файлов в каталоге и его подкаталогах, а затем распечатать результаты в файле txt
Моя проблема заключается в следующем. Я хочу перечислить все имена файлов в моем каталоге и его подкаталогах и получить этот вывод, напечатанный в txt файле. Теперь это код, который у меня есть до сих пор:
import os
for path, subdirs, files in os.walk('\Users\user\Desktop\Test_Py'):
for filename in files:
f = os.path.join(path, filename)
a = open("output.txt", "w")
a.write(str(f))
Здесь перечислены имена файлов в папках (их 6), но каждый новый файл перезаписывает старое, поэтому в файле output.txt есть только одно имя файла в любой момент времени. Как изменить этот код, чтобы он записывал все имена файлов в файле output.txt?
Ответы
Ответ 1
не открывайте файл в цикле for
. откройте его перед циклом for
как это
import os
a = open("output.txt", "w")
for path, subdirs, files in os.walk(r'C:\Users\user\Desktop\Test_Py'):
for filename in files:
f = os.path.join(path, filename)
a.write(str(f) + os.linesep)
Или используя диспетчер контекста (который лучше подходит):
import os
with open("output.txt", "w") as a:
for path, subdirs, files in os.walk(r'C:\Users\user\Desktop\Test_Py'):
for filename in files:
f = os.path.join(path, filename)
a.write(str(f) + os.linesep)
Ответ 2
Вы открываете файл в режиме записи. Вам нужен режим добавления. Подробнее см. В руководстве.
изменение
a = open("output.txt", "w")
в
a = open("output.txt", "a")
Ответ 3
Вы можете использовать нижеприведенный код для записи только имени файла из папки.
import os
a = open("output.txt", "w")
for path, subdirs, files in os.walk(r'C:\temp'):
for filename in files:
a.write(filename + os.linesep)