Bonjour,
J'ai un fichier xxxx.txt
Je souhaite juste récupérer le nom de ce fichier sans son extension de sorte que lorsque je fais
il m'affiche xxxx
Y'a t-il un moyen svp ? merci :ccool:
Version imprimable
Bonjour,
J'ai un fichier xxxx.txt
Je souhaite juste récupérer le nom de ce fichier sans son extension de sorte que lorsque je fais
il m'affiche xxxx
Y'a t-il un moyen svp ? merci :ccool:
Bonjour,
peu être en utilisant les expressions régulières :
Code:
1
2
3
4
5 import re m = re.search('[^.]*','xxxx.txt') print m.group(0)
Citation:
xxxx
merci :mrgreen:
Bonjour
Une expression régulière pour récupérer ce qu'il y a avant un '.' dans une chaine, c'est un peu "grosse Bertha".
split() fait tout aussi bien l'affaire.
De plus, quand il s'agit d'un nom de fichier, os.path.splitext est même mieux : souvent les fichiers subissent plusieurs transformations et les extensions s'enchainent :
ici, le fichier gzippé c'est xxxx.tar, pas xxxCode:
1
2
3
4
5 >>> m = re.search('[^.]*','xxxx.tar.gz') >>> m.group(0) 'xxxx' >>> os.path.splitext('xxxx.tar.gz') ('xxxx.tar', '.gz')
Pour peu que ce soit un chemin, avec un répertoire dont le nom contient un '.' (versions) et pas un simple nom, la différence est encore plus flagrante :
Code:
1
2
3
4
5 >>> m = re.search('[^.]*','a/b/c.d/xxxx.tar.gz') >>> m.group(0) 'a/b/c' >>> os.path.splitext('a/b/c.d/xxxx.tar.gz') ('a/b/c.d/xxxx.tar', '.gz')
Bonjour :)
Bon je suis pas un pro Python, mais si il souhaites vraiment ne pas avoir la ou les extensions versions possible, pourquoi ne pas utilisé tout simplement split() comme dit au dessus ?
Les deux for peuvent être fait en même temps je penses. Seul soucis de sa, si ton fichier s'appel "fichier.quelquechose.tar", dans ta liste tu n'auras que "ficier"Code:
1
2
3
4
5
6
7
8 listFile = ('Fichier1.txt', 'Fichier2.tar.gz', 'Fichier3.gz.tu' listFileSplit = [] listFinal = [] for x in listFile: listFileSplit.append(x.split(".")) for x in listFileSplit: listFinal.append(x[0])
Bonjour,
le module os propose cela.
Ceci renvoie :Code:
1
2
3
4
5
6
7
8
9
10
11
12 #! /usr/bin/env python #coding=utf-8 import os for onePath in [ "/monDossier/MonFichier.txt", "/monDossier/MonFichier", "MonFichier.txt", "MonFichier", ]: print os.path.splitext(os.path.basename(onePath))[0]
Code:
1
2
3
4 MonFichier MonFichier MonFichier MonFichier
Tout dépendra du contexte. Je voulais seulement, en parlant de os.path.splitext, élargir la discussion, d'autant que, parfois les questions sont posées "à minima". Connaître son existence ne mange pas de pain et c'était une bonne occasion. C'est toutCitation:
mais si il souhaites vraiment ne pas avoir la ou les extensions versions possible, pourquoi ne pas utilisé tout simplement split() comme dit au dessus ?
[...]
Seul soucis de sa, si ton fichier s'appel "fichier.quelquechose.tar", dans ta liste tu n'auras que "ficier"
Oups, j'avais pas lu en détail ton message. :roll: