Maison  >  Article  >  interface Web  >  Python implémente le répertoire d'impression d'arborescence structure_python

Python implémente le répertoire d'impression d'arborescence structure_python

不言
不言original
2018-04-02 16:31:202122parcourir

Cet article présente principalement en détail le code pertinent de la structure du répertoire d'impression de l'arborescence Python, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

L'exemple de cet article partage Python avec tout le monde. pour la structure du répertoire d'impression arborescente est pour votre référence. Le contenu spécifique est le suivant

Avant-propos

Lorsque je triais les fichiers de données au cours des deux derniers jours, j'ai J'ai découvert qu'il y avait de nombreux clics les uns après les autres. La visualisation des dossiers est très fastidieuse, j'ai donc voulu écrire un outil pour imprimer de manière récursive l'arborescence du répertoire de fichiers. J'ai trouvé des informations sur Internet et j'ai presque toutes utilisé <.>os.walk, et je l'ai débogué plus tard, j'ai découvert que ce qui était renvoyé semblait être un "générateur", qui ne nécessitait qu'une boucle for. Cependant, la structure obtenue de cette manière semblait l'être. une structure BFS, pas la structure arborescente que je voulais. Finalement, j'ai trouvé os.listdir est cette fonction, mais je peux l'utiliser pour écrire une recherche en profondeur d'abord. cela s'appelle récursivement, mon problème peut être résolu.

Code

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#a test for traverse directory

__author__ = &#39;AlbertS&#39;

import os
import os.path

def dfs_showdir(path, depth):
 if depth == 0:
 print("root:[" + path + "]")

 for item in os.listdir(path):
 if &#39;.git&#39; not in item:
  print("| " * depth + "+--" + item)

  newitem = path +&#39;/&#39;+ item
  if os.path.isdir(newitem):
  dfs_showdir(newitem, depth +1)

if __name__ == &#39;__main__&#39;:
 dfs_showdir(&#39;.&#39;, 0)

Effet de course

root:[.]
+--1111.segmentfault.com
| +--01decode.py
| +--01string.txt
| +--1111.segmentfault.com.tar.gz
+--urllib_test.py
+--use_module.py
+--water_deal
| +--water_pouring2.py
+--web
| +--module_test.py
| +--__init__.py
| +--__pycache__
| | +--module_test.cpython-34.pyc
| | +--__init__.cpython-34.pyc
+--web_crawler
| +--bg_teaser.svg
| +--crawler_images
| | +--10393478-1.jpg
| | +--13802226-1.jpg
| | +--169b1b76356f636.jpg
| | +--1a774de56fb4bf2.jpg
| | +--small_event_dft.jpg
| | +--ypy_qr.jpg
| +--crawler_image_test.py
| +--crawler_test.py
| +--crawler_website
| | +--crawler_article_set
| | | +--aiohttp.html
| | | +--asyncio.html
| | | +--async_await.html
| | | +--base64.html

Résumé

  • Quand je l'ai écrit pour la première fois, j'ai découvert que je ne pouvais récurer qu'un seul niveau de dossiers. Plus tard, j'ai découvert que c'était le problème. s'est produit dans la fonction os.path.isdir ici.

  • Le paramètre passé à la fonction os.path.isdir ne peut être qu'un chemin absolu, ou un chemin relatif par rapport au répertoire de travail.

  • Avec les problèmes découverts ci-dessus, le processus d'épissage de variables newitem est né.

Recommandations associées :


Python implémente la fonction de fusion de deux fichiers

Python implémente la génération La méthode d'implémentation d'un objet itérable

Python implémente la vérification de type des attributs d'instance

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn