Я хочу перейти из корневого каталога во все остальные каталоги внутри и распечатать то же самое.
Вот мой код:
#!/usr/bin/python
import os
import fnmatch
for root, dir, files in os.walk("."):
print root
print ""
for items in fnmatch.filter(files, "*"):
print "..." + items
print ""
И вот мой O / P:
.
...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py
./packagedemo
...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
Выше .
и ./packagedemo
каталоги.
Однако мне нужно распечатать O / P следующим образом:
A
---a.txt
---b.txt
---B
------c.out
Выше, A
и B
каталоги, а остальные файлы.
Ответы:
Это даст вам желаемый результат
источник
os.walk(u".")
потому что пути могут быть Unicode.os.path.curdir
os.path.walk
некоторое время, такos.walk
что для меня это ново! Холодные бобы.basepath
равно в вашем коде?попробуй это:
вы получите это:
источник
print(FileTreeMaker().make(args),file=tree)
но это дает мне'charmap' codec can't encode characters in position 17-21: character maps to <undefined>
os.listdir()
тоже. Твой намного лучше; Я не мог правильно понять рекурсию, она работала только на 2 или 3 слоях. В конце концов я решил попробовать снова с нуляos.walk()
, что, как мне показалось, было бы гораздо более подходящим. Я удивлен, что ты вообще не использовал это здесь.Для этого в
os
пакете есть более подходящие функции . Но если вам нужно использоватьos.walk
, вот что я придумаювывод:
источник
os.listdir
но решение @ ajay превосходит это.Вы можете использовать
os.walk
, и это, вероятно, самое простое решение, но вот еще одна идея для изучения:Вы можете узнать следующую документацию по команде TREE в терминале Windows:
источник
Рекурсивная прогулка по каталогу, где вы получаете ВСЕ файлы из всех каталогов в текущем каталоге, и вы получаете ВСЕ каталоги из текущего каталога - потому что приведенные выше коды не имеют простоты (imho):
источник
os.path.join(root, filename)
дает полный путь к файлу, даже если файл вложен в несколько каталогов.Это делает это для имен папок:
источник
источник
Учитывая имя папки, рекурсивно пройдитесь по всей ее иерархии.
источник
Будет лучшим способом
источник
dir + d
, что может объединить их без разделителя каталогов. Вероятно, лучше использоватьos.path.join
для объединения каталогов с именами файловПопробуйте это; легкий
======== ВЫХОД ниже ========
источник
Попробуй это:
Здесь я принимаю ваш путь как "." в котором находятся root_file и другие каталоги. Итак, в основном, мы просто выполняем итерацию по всему дереву с помощью вызова next (), так как наш os.walk является только порождающей функцией. Делая это, мы можем сохранить все имена каталогов и файлов в dir_names и file_names соответственно.
источник
Вы также можете рекурсивно пройтись по папке и перечислить все ее содержимое, используя pathlib.Path ()
Вывод:
источник
источник