IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Traitement d'une chaine de caractères


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Traitement d'une chaine de caractères
    Bonjour à tous,

    Je travaille actuellement avec le Framework Zope, couplé au CMS Plone et utilise donc pas mal de python.

    Mon objectif est de créer une arborescence composée de dossiers et de fichiers, mise en place à l'aide de la méthode invokeFactory de Zope.

    Pour parvenir à ça, je dois "traiter" les chemins des fichiers que je récupère dans un catalogue, pour recréer l'arborescence correspondante.

    Par exemple, un fichier correspond à ce chemin: /nom_dossier1/nom_dossier11/nom_fichier

    Je voudrais savoir s'il existe une fonction permettant par exemple de récupérer le nom du dossier1 en "lisant" mon chemin jusqu'au premier slash. Je créerai ainsi mon dossier, puis continuerai la lecture pour créer mon second dossier, puis finirai par créer un fichier, n'ayant plus de slash dans ma chaine de caractères.

    Voilà l'idée, j'espère être à peu près clair, mais n'hésitez pas si vous souhaitez des précisions!

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse guigui, malheureusement cette solution n'est pas applicable dans mon cas.

    Je dois créer des objets Plone, utilisant ainsi une fonction particulière à laquelle je passe en paramètre le type d'objet Plone. La fonction mkDir ne permet donc pas de créer ce type d'objet.

    J'y ai pas mal réfléchi et je ne vois donc pour l'instant pas d'autre solution que de me mettre à la racine, créer un dossier plone, ma placer dans ce dossier, lire le chemin, créer le dossier suivant etc.

    C'est peut être une mauvaise solution, mais je n'ai pas encore trouvé mieux...


    Je vais voir ce que je peux faire avec la fonction splitunc que tu m'as indiqué.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    En regardant un peu ce qu'il était possible de faire avec la fonction split(), je suis arrivé à ça:

    path = self.restrictedTraverse("Members/" + id_user(self) + "/Documentations")
    liste_rep = chemin.split('/')

    for i in liste_rep[1:-1]:
    path.invokeFactory(id=i, title=i, type_name="Folder")
    path = (path + "/" + i)
    path.invokeFactory(id=liste_rep[-1], title=liste_rep[-1], type_name="File")
    Le path est le chemin auquel je veux créer mes objets.
    La fonction invokeFactory est une fonction Zope qui permet de créer les objets plones, de type (comme vous pouvez le voir) "Folder" ou "File" par exemple.

    Mon code renvoie une erreur sur la ligne que j'ai mise en orange.
    Le reste est fonctionnel, je l'ai testé et sans cet "incrément de chemin", tous mes objets se créent bien dans le dossier "documentations".

    Voyez-vous par hasard une éventuelle erreur sur cette ligne?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    pourrais tu nous mettre l'erreur que tu obtiens ? Est-ce un problème de concaténation ou autre chose?

    sinon je pense que tu va rencontrer un problème dans ton "for" si path n'est pas réinitialisé a chaque fois. un exemple simple pour expliquer ce que tu va obtenir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >>> path="c:/uti"
    >>> for i in ("a","b","c","d") :
    ...    path=(path+"/"+i)
    ...    print path
    ...
    c:/uti/a
    c:/uti/a/b
    c:/uti/a/b/c
    c:/uti/a/b/c/d
    après tu n'as peut être pas ce problème (il suffit que path soit réinitialisé dans le for)

    MLG

Discussions similaires

  1. Traitement sur une chaine de caractère
    Par trikker dans le forum Débuter
    Réponses: 11
    Dernier message: 04/06/2009, 10h30
  2. Traitement d'une chaine de caractère.
    Par azmodai dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/02/2009, 00h14
  3. Réponses: 3
    Dernier message: 27/04/2008, 19h10
  4. [FLASH 8] traitement d'une chaine de caractère
    Par KaiN_974 dans le forum Flash
    Réponses: 17
    Dernier message: 12/06/2006, 11h42
  5. traitement d'une chaine de caractère
    Par mohamed dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2004, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo